我正在尝试使用http://reddit.com/.json文件将reddit frot页面中的每个标题放入一个数组中。我在另一个网站上使用了相同的代码来返回只出现一次的内容。因为“标题”出现多次,所以我需要将每个标题放入一个数组中。
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError *error;
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSMutableArray *latestTitles = [json objectForKey:@"title"];
NSLog(@"titles: %@", latestLoans);
}
我认为这应该有用但我编译标题:( null)
答案 0 :(得分:1)
看起来你正在查看根对象,并期待一系列标题,但事实并非如此。
您的代码适用于此JSON结构:
{
"titles":[
"Some Title",
"Another Title",
]
}
不幸的是,这不是http://reddit.com/.json所提供的。看起来更像是这样:
{
data: {
children: [
{
data: {
// other data...
title: "Some Title"
}
}, {
data: {
// other data...
title: "Another Title"
}
}
// other objects...
]
}
}
你会注意到没有标题数组。相反,有一个对象数组,每个对象都有一个title
属性。
然后,您可以遍历结构,并构建一个标题数组。
NSArray *objects = [[json objectForKey:@"data"]
objectForKey:@"children"];
NSMutableArray *titles = [[NSMutableArray alloc] init];
for (NSDictionary *object in objects) {
NSString *title = [[object objectForKey:@"data"]
objectForKey:@"title"];
[titles addObject:title];
}
NSLog(@"titles: %@", titles);
您必须横向JSON结构。 JSON中没有与XML等效的XPATH。您必须从根目录钻取对象,直到获得所需的数据。它的简单就像是信不信由你真的很棒。