OGeek|极客世界-中国程序员成长平台

标题: iphone - 在 iOS 中解析 JSON(再次) [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:54
标题: iphone - 在 iOS 中解析 JSON(再次)

我只是在 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-推荐答案


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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4