【问题标题】:How to parse JSON如何解析 JSON
【发布时间】:2013-04-30 08:47:01
【问题描述】:

如何在一个数组的“选择”下方解析这个意味着当我在数组中获得“id”时,所有 id 值 108,109....在数组的第一个索引中,但这里是选择中的 5 个值..那么如何解析它

choices = (
              {
                  id = 108;
                  label = Distributor;
              },
              {
                  id = 109;
                  label = "Clinical Lab";
              },
              {
                  id = 110;
                  label = Researcher;
              },
              {
                  id = 111;
                  label = "Current Customer";
              },
              {
                  id = 112;
                  label = "Past Customer";
              }
          );

【问题讨论】:

  • 你到底想要什么?问题不清楚?
  • 我想将所有“id”放在数组中的不同索引中
  • :你有答案了吗?
  • sunny Yes 有另一个解决方案

标签: objective-c json parsing


【解决方案1】:

兄弟,一步到位

如果您的数组是NSMutableArray,则使用 as

NSArray *resultArray =  [[NSArray arrayWithArray:temp] valueForKeyPath:@"id"]

如果是简单的NSArray 则使用 as

NSArray *resultArray = [jsonArray valueForKeyPath:@"id"]

【讨论】:

  • 这只有在每个条目都有一个 id 时才有效(这次可能就是这种情况)
  • 他想要同样的仪式?而不是写三到四行只是让它变得简单。@ChristianKienle
  • 我只是想指出您建议的方法在任何情况下都不起作用,我还提到它可能在这种情况下起作用,因为可以假设总是有一个 id。我完全同意您对简单案例的建议,这就是为什么我对您的回答投赞成票。 :)
【解决方案2】:

您可以使用fast enumeration 来完成。

NSMutableArray *resultArray = [[NSMutableArray alloc] initWithCapacity:0];
// JSONDict is your JSON dict
for (NSDictionary *aDict in JSONDict[@"choices"]) {
    [resultArray addObject:aDict[@"id"]];
}

NSLog(@"%@", resultArray);

输出:

( 108, 109, 110, 111, 112 )

【讨论】:

  • 我认为这是工作,我得到了另一个解决方案,非常有帮助
【解决方案3】:

如果我正确理解了您的问题,那么您可以尝试以下代码来获取数组中的 ID:

 NSMutableArray *arr = [[NSMutableArray alloc] init];
    for (int i = 0;i<[choices count];i++)
    {
        [arr addObject:[[choices objectAtIndex:i] objectForKey:@"id"]];
    }

    NSLog(@"ID array : %@",arr);
[arr release];

【讨论】:

    【解决方案4】:

    试试这样,

        NSMutableArray *idArray=[[NSMutableArray alloc]init];
        for(int i=0;i<[jsonArray count];i++)
            [idArray addObject:[[jsonArray objectAtIndex:i] valueForKey:@"id"]];
        NSLog(@"%@",idArray);
    

    在这里您将获得 idArray 中的所有值。

    【讨论】:

    • 不,这对我不起作用,但我有另一个解决方案,谢谢 Sunny
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2023-01-11
    相关资源
    最近更新 更多