从子数组 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 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

从子组件中过滤数组数据表

从子组件过滤数组数据表

如何从带有 ios Swift 3 的肥皂 Web 服务方法中获取 json 数组字符串?

为啥父组件不能从子组件获取数据? 1

从 ios 中的 Url 获取多个图像

我可以从子组件获取计算数据到父组件吗?