如何解析 json 值的动态变化。带有 2 个嵌套 dic 的字典,然后是数组,然后是 dic

Posted

技术标签:

【中文标题】如何解析 json 值的动态变化。带有 2 个嵌套 dic 的字典,然后是数组,然后是 dic【英文标题】:How to parse Dynamic changes in json value. Dictionary with 2 nested dic & then array and then dic again 【发布时间】:2015-03-20 05:18:47 【问题描述】:

字典有两个嵌套字典,然后是数组,然后又是字典我如何通常为目标 c,ios 8 编写代码;


  "brands": 
    "Clinique": 
      "Foundation": 
        "Even Better Makeup SPF 15": 
          "productName": "Even Better Makeup SPF 15",
          "colors": [
            
              "id": "30816",
              "client_id": "1422956000sjdaC",
              "product_id": "190",
              "shade_name": "Alabaster",
              "shade_code": "#F0C9AE",
              "color_id": null,
              "image_url": "",
              "price": "",
              "offer": "",
              "created_by": "1422956000sjdaC",
              "created_date": "2015-03-06",
              "sku_id": "",
              "product_web_url": "",
              "brand_id": "Clinique",
              "product_name": "Even Better Makeup SPF 15",
              "makeup_type": "Foundation",
              "color_family": "cool"
            ,

【问题讨论】:

“json 值的动态变化”是什么意思? 我可以看到缺少几个花括号。请提供完整的“Json 响应”代码。 如果后端数据(json数据)可以频繁更改。@HuyNghia 最后缺少三个大括号。 @UmangBista 您如何获取数据,使用 AFNetworking 或其他方式? 【参考方案1】:

正如我所见,您的 JSON 响应正在发送产品详细信息,因此

"brands": 
    "Clinique": 
      "Foundation": 

将始终保持不变,其下方的响应将根据产品而变化。

NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

NSDictionary *productsDict = [[jsonDictionary objectForKey:@"brands"] objectForKey:@"Clinique"] objectForKey:@"Foundation"];

NSArray *keys=[productsDict allKeys];

for (int i = 0; i < keys.count; i++) 
    NSDictionary *prodSingle = [productsDict objectForKey:[NSString StringWithFormat:@"%@",keys[i]]];

现在你有了 prodSingle,用它来获取每个产品的数据。

注意:未经测试,如果这不起作用,我将提供一个测试版本。

编辑: 正如你所说,只有brands 键会保持不变,其他键会动态变化,

你应该这样做:

所以你可以做的是创建一个带有 jsonData(response data) 的 NSDictionary,如下所示:

NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

创建品牌词典

NSDictionary *brandsDict = [jsonDictionary objectForKey:@"brands"];

现在获取所有密钥:

NSArray *keys= [brandsDict allKeys];

现在使用您在 Array 中获得的每个键来相应地获取数据。

【讨论】:

好的兄弟,我问我的键值动态变化,除了“品牌”。 我已经用这个方法了。如果假设我在品牌中有 100 个键值,我选择 100 个方法,每次循环将生成 100 次。应用会崩溃 它的动态键值。常量键值仅是“品牌” 答案已编辑。我只能为您提供提示,而不是您所看到的完整代码。 我也可以从我的网络数据中清楚地解释。 Web 数据中有四个列表视图。如果我选择一个列表视图,则它会根据第一个列表视图选择显示第二个列表视图,如根据先前选择的第三个和第四个列表视图

以上是关于如何解析 json 值的动态变化。带有 2 个嵌套 dic 的字典,然后是数组,然后是 dic的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 在巨大的 CSV 中解析带有嵌套值的 JSON 列

如何使用Retrofit 2解析动态JSON(+嵌套对象)

如何从 URL 解析带有 Windows Phone 8 中图像的 Json 数据?动态数据

如何在 dart 中解析动态 JSON 键

如何解析具有动态键名的嵌套 json

如何使用公共密钥合并 2 个 json 文件