2013-05-09 78 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