2014-05-17 41 views
1

我已将此Google搜索结果导向死亡并找不到正确的答案。也许我没有正确地解答这个问题。我有一个提供JSON提要的Web服务。我登录并验证我的用户名和密码,然后解析一些JSON提要,并按照以下方式将它插入NSArray。解析JSON订阅源后处理NSArray中的Unicode字符

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
self.urlData = [[NSMutableData alloc] init]; 
NSLog(@"DID RECEIVE RESPONSE"); 
} 


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data 
{ 
//NSLog(@"THE RAW DATA IS %@", data); 
[self.urlData appendData:data]; 

//NSData 
NSString *strRes = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 

//NSLog(@"LOGGING THE DATA STRING %@", strRes); 

} 


- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 

NSError *jsonParsingError = nil; 



self.parsedJSONFeed = [NSJSONSerialization JSONObjectWithData:self.urlData options:0 error:&jsonParsingError]; 

self.titleList = [_parsedJSONFeed valueForKeyPath:@"response.page_items.title"]; 
self.dateList = [_parsedJSONFeed valueForKeyPath:@"response.page_items.date"]; 

//NSLog(@"RESPONSE: %@",[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]); 

if (jsonParsingError) { 

    NSLog(@"JSON ERROR: %@", [jsonParsingError localizedDescription]); 

} else { 
    //NSLog(@"PARSED OBJECT %@", parsedObject); 

    //NSLog(@"OBJECT: %@", [object class]); 

} 

[self.tableView reloadData]; 

} 

所以现在“self.titleList”是包含文本,但在Unicode字符也通过从JSON提要通过一个NSArray。有没有办法来防止这种情况发生,或者在解析JSON提要之前/之后转换这些unicode字符?提前致谢。

+0

验证是没有意义的;从您的问题中删除代码,并发布导致问题的字符示例。我知道\字符将会在某处输出,并且理解(对于我们和你),这个字符是在JSON中还是由你使用视图字符数据的任何机制来添加是很重要的。因此,请找到一些方式向我们(和您自己)展示这一点。除此之外,一个结构良好的问题+1。 – trojanfoe

+0

好点。我已经删除了验证码。基本上,NSArray中的任何特殊字符都被类似的Unicode代码所替代。即连字符,双/单引号等。如果我NSLog(NSDictionary)_parsedJSONFeed或(NSArray)self.titleList它们都包含Unicode代码,而不是实际的特殊字符。如果我直接在浏览器中查看JSON,则不存在Unicode编号,它们的特殊字符正确无误。 – user3595777

回答

0

因此,如果有人登陆这个页面上有同样的问题。事实上,他们是导致问题的HTML编码的unicode实体。

将此类:https://github.com/Koolistov/NSString-HTML类别导入到您的项目中,并将您的NSString发送到相关方法。现在所有的工作都很好。