【问题标题】:Parse a complex JSON解析复杂的 JSON
【发布时间】:2016-07-13 13:13:08
【问题描述】:

我在工作中偶然发现了一个问题。我有一个需要解析的 JSON,以便填充我的表。但是让我们忽略表格人口,因为我自己可以做到这一点。我似乎遇到的问题是解析这个大 json。简而言之:

NSData *jsonData = [NSData dataWithContentsOfURL:url];
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSArray* DetaliiTehnice = [json objectForKey:@"DetaliiTehnice"]; //10 elements
NSArray* ExtraData = [json objectForKey:@"ExtraData"]; //2 keys

我没有设法更多地解析它们。从完整的解析我想要这个:

- Array DateTehnice (10 elements)
     + Array/String Denumire (1 element)
     + Array Valori (3 elements)
         + String Criteriu
         + String Prod1
         + String Prod2

- Array ExtraData (6 elements)
     + Array/String Denumire (1 element)
     + Array Valori (3 elements)
         + String Criteriu
         + String Prod1
         + String Prod2

标有+的是我真正需要的那个。我不知道如何访问它们。如何获取 Prod2 值?我不需要非常优化的东西,我只需要一个可以访问元素的解决方案。

【问题讨论】:

  • 您能否发布 JSON,因为这将为我们提供有关结构的更多信息。
  • 您的 tableView 需要从 DateTehnice 或 ExtraData 获得哪些数据?
  • 我发布了 JSON 的链接,检查我发布的第一行代码。它在网站上。我需要这两个数组,DateTehnice 包含带有客户将要查找的信息的字符串(例如:鸡蛋、牛奶、面包),ExtraData 包含指向我显示的信息的图片链接(例如:指向鸡蛋图像的链接)。跨度>
  • 你从 url 得到什么类型的数据——数组还是字典?也许你需要 NSArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error]; ?
  • 你可以试试 JSON Accelerator 工具。这是创建 JSON 响应的 Bean 类的非常简单且有用的工具。 itunes.apple.com/in/app/json-accelerator/id511324989?mt=12。我认为这个工具可以帮助你轻松解析 json。快乐编码。

标签: ios objective-c json cocoa


【解决方案1】:
NSString *prod2_DateTehnice = [[[json objectForKey:@"DateTehnice"]objectAtIndex:0] objectAtIndex:0]objectAtIndex:2];

同样的方法

NSString *prod2_ExtraData = [[[json objectForKey:@"ExtraData"]objectAtIndex:0] objectAtIndex:0]objectAtIndex:2];

【讨论】:

  • 然后检查你的 json,如果它有值。 NSlog(@"json 数据 %@",json);
【解决方案2】:

如果你从服务器获取字典,那么获取数据:

NSArray *DetaliiTehnice = json[@"DateTehnice"];
for (NSString *item in DetaliiTehnice) {
    NSLog(@"%@", item);
}

NSLog(@"%@", DetaliiTehnice[1]);

如果得到数组,则替换为:

NSArray *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *dict = json[1]; //change index
NSArray *DetaliiTehnice = dict[@"DateTehnice"];
for (NSString *item in DetaliiTehnice) {
    NSLog(@"%@", item);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2021-06-20
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多