如何使用 SBJson 和 Objective-C 解析和提取嵌套的 JSON 响应
Posted
技术标签:
【中文标题】如何使用 SBJson 和 Objective-C 解析和提取嵌套的 JSON 响应【英文标题】:How To Parse And Extract Nested JSON Response Using SBJson And Objective-C 【发布时间】:2011-08-13 03:56:00 【问题描述】:谁能告诉我如何从下面的 JSON 响应中解析和提取数据节点,即 CM、Dozen、Foot...,以便它可以用作 UITableView 的数据源?
success: true, dataCount: 11, data:
["unitName":"CM","unitName":"Dozen","unitName":"Foot","unitName":"Gross","unitName":"Inch","unitName":"K","unitName":"KG","unitName":"LB","unitName":"Piece","unitName":"Set","unitName":"Yard"]
在此先感谢您的帮助。
干杯
更新...
Oli 和 Srika,你们太有帮助了!
下面是我的代码...
NSString *myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://192.168.0.100/myApp/getUnitInJson.php"]]; //myRawJson 响应如下 success: true, dataCount: 5, data: ["unitName":"CM","unitName":"Dozen","unitName":"Foot","unitName":"Gross" ,"unitName":"英寸"] SBJsonParser *parser = [[SBJsonParser alloc] init]; NSArray *myParsedJson = [[解析器 objectWithString:myRawJson 错误:nil] 复制]; NSArray *myExtractedData = [myParsedJson valueForKey:@"data"]; NSLog(@"RawJsonString: %@", myRawJson); // 输出:RawJsonString: data:["unitName":"CM","unitName":"Inch","unitName":"Foot","unitName":"Yard", ] NSLog(@"myExtractedData 计数:%@", [myExtractedData 计数]); // 输出:myExtractedData 计数:(null)
myExtractedData 中没有任何内容。我做错什么了吗?
请帮忙。
【问题讨论】:
【参考方案1】:您是否让用户在 UITableView 中添加/修改数组,这就是您需要它可变的原因吗?
无论如何,您可以这样做:从“wholeResponse”字典访问数据数组,然后将该数组转换为可变数组。
NSArray *data = [wholeResponse valueForKey:@"data"];
NSMutableArray *mutableData = [NSMutableArray arrayWithArray:data];
// Do something with the mutable data.
【讨论】:
您好奥利,感谢您的快速回复。我刚刚更新了我的问题。请检查一下并帮助我。【参考方案2】:从整个NSDictionary
中获取data
-
NSArray values = [data objectForKey:@"data"]
。
这给出了与data
关联的NSArray
。
要获得 CM 试试这个 -NSString *CM = [[values objectAtIndex:0] objectForKey:@"unitName"]
Dozen,Foot 也是如此。等等
然后您可以将此数据放入UITableView
。
更新:试试这个。我假设您使用 this 作为 JSON 解析器。
NSDictionary *myParsedJson = [myRawJson JSONValue];
NSArray *myExtractedData = [myParsedJson valueForKey:@"data"];
NSLog(@"myExtractedData Count: %@", [myExtractedData count]);
【讨论】:
Srikar,非常感谢您的快速回复。但是 NSMutableArray 有 getObjectForKey 方法吗?我似乎找不到它。 对不起,错字!!。应该是objectForKey
是NSDictionary
。
Srikar,我刚刚更新了我的问题。请看看它并帮助我。
@Wong,这不是NSArray *myParsedJson
错了吗?不应该是NSDictionary
吗?
我只是改成NSDictionary *myParsedJson,结果还是一样的。以上是关于如何使用 SBJson 和 Objective-C 解析和提取嵌套的 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章