我正在尝试访问我从网站上获取并存储在数组中的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);
}
答案 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:
,因为数据嵌套在另一个对象中