从子数组 JSON IOS 获取数据
Posted
技术标签:
【中文标题】从子数组 JSON IOS 获取数据【英文标题】:Get data from subarray JSON IOS 【发布时间】:2014-05-05 12:58:04 【问题描述】:我有一个这样的 json 数组:
"posts": [
"id": 917,
"tags": [
"id": 39
]
,
"id": 918,
"tags": [
"id": 38
]
]
我已经获得了帖子 ID,但无法获得帖子标签 ID 需要获取每个帖子的数据,例如。发布 917(标签 39),发布 918(标签 38)。
我使用来自 github 的 Jsonloader,链接:github.com/Phillipus/JSONHandler
【问题讨论】:
请分享您用于获取 JSON 元素的代码。 你能在这里添加你的代码吗? 它是一个嵌套的,只是迭代...... 【参考方案1】:我认为 json 的格式是错误的。它应该是这样的:-
"posts":["id":917,"tags":39,"id":918,"tags":38]
这是一个包含 2 个字典对象的数组。然后,您可以使用
获取对象NSArray * postArray = [json objectForKey:@"posts"];
NSDictionary * firstObject = [postArray firstObject];
NSNumber * id1 = [firstObject objectForKey:@"id"];
NSArray * tags1 = [firstObject objectForKey:@"tags"];
NSNumber* tag1 = [[tags firstObject] objectForKey:@"id"];
试试这个。
更新答案:
NSArray * postArray = [json objectForKey:@"posts"];
for(int i=0;i<postArray.count;i++)
NSDictionary * postObject = [postArray objectAtIndex:i];
NSNumber * postId = [postObject objectForKey:@"id"];
NSLog(@"PostID:%@",postId);
NSArray * postTag = [postObject objectForKey:@"tags"];
for(int j=0;j<postTag.count;j++)
NSDictionary * postTagIdDic = [postTag objectAtIndex:j];
NSNumber * postTagId = [postTagIdDic objectForKey:@"id"];
NSLog(@"postTagId:%@",postTagId);
【讨论】:
json格式正确,wordpress通过WP JsonAPI构建json hm... 那会有点棘手。让我稍后修改我的答案。 但是为什么有 4 x 但只有 3 x 。有点不对劲。 刚刚更新了答案以反映 json 格式的变化。【参考方案2】:你可以用这个
NSError *error=nil;
id json=[NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
if (!error)
NSLog(@"json:%@",json);
NSArray *a=[[json objectForKey:@"posts"] copy];
NSArray *tags=[[a objectAtIndex:0] copy];
NSLog(@"%@",[NSStrig stringWithFormat:@"%@",[[tags objectAtIndex:0] objectForKey:@"id"]]);
[a release];
【讨论】:
以上是关于从子数组 JSON IOS 获取数据的主要内容,如果未能解决你的问题,请参考以下文章