如何将JSON数据添加到NSArray

我有json数据如下。

[ {"id":"2","imagePath":"image002.jpg","enDesc":"Nice Image 2"}, {"id":"1","imagePath":"image001.jpg","enDesc":"Nice Image 1"} ] 

我将它分配给名为NSArray *newsvariables。

现在我有三个不同的数组,如下所示。

 NSArray *idArray; NSArray *pathArray; NSArray *descArray; 

我想给这些数组分配新闻数据,最后我应该如下。

 NSArray *idArray = @["2","1"]; NSArray *pathArray = @["image002.jpg","image001.jpg"]; NSArray *descArray = @["Nice Image 2","Nice Image 1"]; 

任何想法如何做到这一点?


在下面的答案帮助下,这就是我所做的。

 pathArray = [[NSArray alloc] initWithArray:[news valueForKey:@"imagePath"]]; 

由于某些原因,我不想使用NSMutableArray。

您应该使用JSONKit或TouchJSON将您的JSON数据转换为Dictionary。 比你可能做到这一点:

 NSArray *idArray = [dictionary valueForKeyPath:@"id"]; // KVO 

用这个

 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:nil]; 

那么你可以从那里提取你需要的所有信息,你有NSArray ,包含NSDictionary ,在那里你可以去使用objectForKey:获取所有你需要的信息。

将json数据加载到NSDictionary中,您可以将其称为“news”。 然后检索为

 NSArray *idArray = [news valueForKeyPath:@"id"]; NSArray *pathArray = [news valueForKeyPath:@"imagePath"]; NSArray *descArray = [news valueForKeyPath:@"enDesc"]; 

是的,以上所有的答案都是正确的我只是将它们集合在一起以便于你使用:

 NSArray *serverResponseArray = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:nil]; // I am assigning this json object to an array because as i show it is in array format. 

现在:

 NSArray *idArray = [[NSMutableArray alloc] init]; NSArray *pathArray = [[NSMutableArray alloc] init]; NSArray *descArray = [[NSMutableArray alloc] init]; for(NSDictionary *news in serverResponseArray) { [idArray addObject:[news valueForKey:@"id"]]; [pathArray addObject:[news valueForKey:@"imagePath"]]; [descArray addObject:[news valueForKey:@"enDesc"]]; }