将 JSON 导入到 Objective-C 时的奇怪输出
Posted
技术标签:
【中文标题】将 JSON 导入到 Objective-C 时的奇怪输出【英文标题】:Strange output when importing JSON to Objective-C 【发布时间】:2014-01-23 13:22:57 【问题描述】:正如问题所说,将 JSON 导入 TableView 类时,我得到了一个意外的输出。
JSON:
"city":"Cambridge""city":"Oxford"
目标-C:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/cities.php"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"%@", response);
输出:
<7b226369 7479223a 2243616d 62726964 6765227d 7b226369 7479223a 224f7866 6f726422 7d>
很确定我的 JSON 结构错误...
【问题讨论】:
谢谢,标题已编辑。 虽然您描述的最初问题只是您正在记录 NSData 的一个实例,如几个答案中所述,但您发布的 JSON 结构不正确,因此您将无法除非你修复它,否则用NSJSONSerialization
反序列化它。
【参考方案1】:
您的响应是 NSData 类型,需要转换为字符串。
NSString *responseString = [[NSString alloc] initWithBytes:[response bytes] length:[response length] encoding:NSUTF8StringEncoding];
NSLog(responseString);
您也可以使用其他地方描述的 initWithData
NSString *responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
虽然这对于调试很有用,但要实际提取或处理数据,您需要将其转换为字典或数组。
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:response options:0 error:NULL];
从这里,您可以参考字典中的项目。
【讨论】:
为什么不使用NSJSONSerialization
将其转换为数组或字典?
这取决于你想要做什么。我假设他希望看到 JSON,而不是 JSON 的字典表示。
如果有影响,我希望将它们显示在 UITableView 对象中。
为什么要这样假设?如果您包含NSJSONSerialization
,您的回答会更有帮助。
说得好。答案已修改。【参考方案2】:
NSArray *responseArray = [NSJSONSerialization JSONObjectWithData:response options:kNilOptions error:nil];
NSLog(@"%@",responseArray);
NSMutableArray *cityArray =[[NSMutableArray alloc] init];
for (int i=0; i<[responseArray count]; i++)
[cityArray addObject:[NSString stringWithFormat:@"%@",[[responseArray objectAtIndex:i] valueForKey:@"city"];
请注意,我相信您会修复该 json 并将其转换为 json 返回一个数组。
【讨论】:
【参考方案3】:NSString *jsonStr = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"%@",jsonStr);
【讨论】:
以上是关于将 JSON 导入到 Objective-C 时的奇怪输出的主要内容,如果未能解决你的问题,请参考以下文章
将方法从 Objective-C 转换为 Swift 时的区别
将 Swift 导入 Objective-C - “使用未声明的标识符”
无法使用桥接头将 Objective-C 文件导入 Swift 项目