如何在NSMutableArray中访问JSON数据?

时间:2013-11-19 11:38:13

标签: ios json macos nsmutablearray nsjsonserialization

我正在尝试访问我从网站上获取并存储在数组中的JSON数据。首先,我想过滤除“标题”信息之外的所有信息,我正在使用valueForKey:方法。为了测试这个,我使用NSLog方法将它们写入日志,但是当我运行它时,我得到“null”。

任何人都可以告诉我,为什么我得到了我得到的东西?

感谢您的帮助,非常感谢。

{
    NSURL *redditURL = [NSURL URLWithString:@"http://pastebin.com/raw.php?i=FHJVZ4b7"];
    NSError *error = nil;
    NSString *jsonString = [NSString stringWithContentsOfURL:redditURL encoding:NSASCIIStringEncoding error:&error];
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSMutableArray *titles = [json valueForKey:@"title"];
    NSLog(@"%@", json);

}

1 个答案:

答案 0 :(得分:0)

查看该pastebin中返回的JSON对象,您将获得以下内容:

    {
        "kind":"Listing",
        "data":{
        "modhash":"",
        "children":[ ... ],
        "after":"t3_1qwcm7",
        "before":null
        }
    }

这不是一个数组,它是一个JSON对象..要获得孩子们的标题,你需要做以下事情:

    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    NSMutableArray *children = [[json objectForKey:@"data"] objectForKey:@"children"];
    NSMutableArray *titles = [children valueForKeyPath:@"data.title"];

这是因为children数组嵌套在"data"对象中,并且每个子对象都嵌套在另一个"data"对象中。

然后您还需要调用valueForKeyPath:而不是valueForKey:,因为数据嵌套在另一个对象中