2013-02-15 34 views
2

如何將jSon響應分配到NSArray將Json數組分配到NSArray(JSONKit)

JSON:

[{"city":"Entry 1"},{"city":"Entry 2"},{"city":"Entry 3"}] 

代碼:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSArray *jsonData = [responseData objectFromJSONData]; 

    for (NSDictionary *dict in jsonData) { 
     cellsCity = [[NSArray alloc] initWithObjects:[dict objectForKey:@"city"], nil]; 
    } 

} 
+0

行的NSArray * jsonData = [responseData objectFromJSONData]已經讓你的JSON成爲一個數組。你使用動詞「分配」是什麼意思? – 2013-02-15 07:41:27

+0

@IcanZilb通過這種方式,它可以接收所有的「城市」條目或僅僅是第一個? – 2013-02-15 07:43:56

+0

在該行後面添加「NSLog(@」obj:%@「,jsonData)」「,你會看到。 – 2013-02-15 07:45:02

回答

2

你可以通過內置的串行蘋果獲得JSON到對象:

NSError *error = nil; 
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:aData options:NSJSONWritingPrettyPrinted error:&error]; 
if(error){ 
    NSLog(@"Error parsing json"); 
    return; 
} else {...} 

所以沒有必要使用外部框架恕我直言(不需要性能,JSONKit就像他們說的那樣,比NSJSONSerializati快25-40%上。

編輯

通過你的意見,我想這是你想要

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    //First get the array of dictionaries 
    NSArray *jsonData = [responseData objectFromJSONData]; 
    NSMutableArray *cellsCity = [NSMutableArray array]; 
    //then iterate through each dictionary to extract key-value pairs 
    for (NSDictionary *dict in jsonData) { 
     [cellsCity addObject:[dict objectForKey:@"city"]]; 
    } 

}什麼

+0

使用'JSONKit'我該怎麼做? – 2013-02-15 07:57:03

+0

你正在發送一個數組中的json對象,所以你的行NSArray * jsonData = [responseData objectFromJSONData];很好。這就是你需要的。 – Alexander 2013-02-15 08:00:23

+0

用我的代碼cellsCity只返回'Entry 3',並使用'NSArray * jsonData = [responseData objectFromJSONData];'我得到錯誤。 – 2013-02-15 08:35:15