2013-05-09 77 views
-2

我试图使用http://reddit.com/.json文件将来自reddit frot页面的所有标题放入数组中。我在另一个网站上使用了相同的代码来返回只出现一次的内容。因为“标题”出现多次,我需要把每个放入一个数组。将.json“标题”转换为阵列IOS

- (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); 
} 

我认为这应该工作,但我编译的标题:(空)

+1

什么'错误'显示? – 2013-05-09 00:37:23

+1

顺便说一句,你应该去json.org并研究那里的JSON语法。学习需要10分钟的时间,在黑暗中你会花费更少的时间。 – 2013-05-09 00:42:55

回答

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等效的XML。您必须钻取根目录中的对象,直到获得所需的数据。它的简单就像那个,不管你信不信,真的很棒。

+0

非常感谢你,我已经习惯了XPath,并且我认为他们的工作是一样的。我已经阅读了更多内容,并对其进行了更多的了解,但我非常感谢他们的帮助。 – Tanner 2013-05-09 01:01:06