使用 Objective C 转换 JSON 并构建字典
Posted
技术标签:
【中文标题】使用 Objective C 转换 JSON 并构建字典【英文标题】:Converting JSON and building a Dictionary using Objective C 【发布时间】:2015-06-27 06:42:01 【问题描述】:我有一个非常复杂的 JSON 数据。我尝试使用目标 c 编程进行解析。 JSON数据如下所示(这里我给出了简单的格式来解释,但它有很深的层次化):
"university": "CUNY",
"results":
"Engineering": 200,
"Computer Science": 298,
"Life Science": 28
使用NSJSONSerialization
,我尝试解决这个问题并使用以下代码:
NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
[parsedObject objectForKey:@"results"];
并得到结果。但是我需要一个像myResultDict
这样的字典,它将由results
组成,这样我就可以实现其他功能。
谁能给我一个小提示如何做到这一点?
【问题讨论】:
您的第二行检索结果字典,但不对其进行任何操作。您需要将该表达式的结果分配给NSDictionary *
类型的变量
知道了! NSDictionary * = parsedObject objectForKey:@"results"]; :)
对于像这样可能容易出错的事情,不要错过捕获和报告错误的机会(即检查parsedObject != nil
,然后报告错误(您已设置为NULL
)。
【参考方案1】:
当您使用NSJSONSerialization
获取解析后的数据时,它会为您提供包含多个键值对的解析字典。
然后通过获取结果键,您可以获得结果字典。
例如:
NSDictionary *myResultDict = [parsedDictionary objectForKey:@"results"];
【讨论】:
注意:使用objectForKey
而不是valueForKey
。【参考方案2】:
试试这个方法:
NSDictionary *dic = @@"university": @"CUNY", @"results" : @@"Engineering": @200, @"Computer Science": @298, @"Life Science": @28;
[self getSubDictionaryWithDictionary:dic];
这个方法只记录NSDictionary
里面的值,如果你想处理NSArray
这种类,由你决定.. :)
- (void)getSubDictionaryWithDictionary:(NSDictionary *)dictionary
for (id key in [dictionary allKeys])
id object = [dictionary objectForKey:key];
NSLog(@"key:%@ value:%@",key, object);
if ([object isKindOfClass:[NSDictionary class]])
[self getSubDictionaryWithDictionary:object];
这会提取嵌套字典中的所有字典,您可以根据需要对其进行修改.. :)
希望这有帮助.. 干杯.. :)
【讨论】:
以上是关于使用 Objective C 转换 JSON 并构建字典的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking JSON 到 UITableView - Objective-C
Objective-C:如何将以下 JSON 转换为可用数据