How do I access JSON data in an NSMutableArray?

前提是你 提交于 2019-12-08 15:19:09

问题


I'm trying to access JSON data that I have taken from a website and stored in an array. First, however, I want to filter out everything but the "title" information, which I am doing using the valueForKey: method. In order to test this I am writing them to the log using the NSLog method, however when I run this I get "null".

Can anyone advise me, as to why I'm getting what I'm getting?

Thanks for your help, much appreciated.

{
    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:


Looking at the JSON object returned in that pastebin, you get the following:

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

That is not an array, its a JSON object.. To get the titles of the children you would want to do the following:

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

This is because the children array is nested in a "data" object and each individual child object is nested in another "data" object.

You then also need to call valueForKeyPath: instead of valueForKey: because the data is nested in another object



来源:https://stackoverflow.com/questions/20070515/how-do-i-access-json-data-in-an-nsmutablearray

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!