我只是在 iOS 中使用 JSON 解析器,它作为一个(简单)示例运行良好。但我想知道如何真正解析(有点)更复杂的东西,Twitter 趋势 JSON,像这样:
{
"trends": {
"2011-03-13 11:42:17": [
{
"events": null,
"query": "Fukushima",
"promoted_content": null,
"name": "Fukushima"
},
{
"events": null,
"query": "Rebecca Black",
"promoted_content": null,
"name": "Rebecca Black"
},
{
"events": null,
"query": "earl Harbour",
"promoted_content": null,
"name": "earl Harbour"
},
...
{
"events": null,
"query": "Magdalena Neuner",
"promoted_content": null,
"name": "Magdalena Neuner"
}
]
},
"as_of": 1300016537
}
如何只返回前 3 个查询?在这种情况下:福岛、丽贝卡·布莱克和珍珠港。
使用示例代码,它是这样的:
for (int i = 0; i < [luckyNumbers count]; i++)
[text appendFormat"%@\n", [luckyNumbers objectAtIndex:i]];
虽然这是一个更简单的提要,但是否可以以相同的方式处理我正在寻找的内容?
我正在尝试返回“查询”的值:
所以我正在这样做:
NSLog(@"%@", [[luckyNumbers objectForKey"trends"]);
这当然会记录键“趋势”的内容,我如何不仅返回趋势的第一个(也是唯一的)键,还向下挖掘一个级别以返回“查询”的内容?
我也尝试过这样的事情:
NSString *date = [[[luckyNumbers valueForKeyPath"trends"] allKeys] description];
NSArray *trends = [luckyNumbers objectForKey"trends"];
NSLog(@"%@", [trends valueForKeyPath:date]);
但是不行……
编辑(aftet honcheng 的回答):
因为我想遍历“趋势”的结果,所以我在做:
NSDictionary *luckyNumbers = [responseString JSONValue];
NSArray *keys = [[luckyNumbers objectForKey"trends"] allKeys];
for (int i =0; i < [keys count]; i++) {
NSLog(@"%@", [keys objectAtIndex:i]);
}
显然出了点问题,因为我没有得到任何结果..
Best Answer-推荐答案 strong>
JSON 解析器通常返回原生 NSObject,例如 NSDictionary 和 NSArray。解析后,您只需将其视为一个新对象。
[luckyNumbers allKeys] 返回一个 NSArray ["trends", "as_of"]
[[luckyNumbers objectForKey"trends"] allKeys"] 返回一个 NSArray ["2011-03-13 11:42:17"]
由于 allKeys 返回一个 NSArray,你可以只使用一个 for 循环来获取你所有的键。
关于iphone - 在 iOS 中解析 JSON(再次),我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/5366694/
|