iphone - 复杂Json解析结果格式

标签 iphone json jsonresult

我是ios开发新手.. 我在从复杂的 json 响应获取数组时遇到问题。 所以任何人都知道它比请帮助我...... 我的 json 响应如下 我想获取 subcat_id 和 subcat_name 数组

  (
    {
    0 =         {
        "subcat_id" = 2;
        "subcat_name" = Restaurants;
    };
    1 =         {
        "subcat_id" = 3;
        "subcat_name" = "Bar & Club";
    };
    "cat_id" = 1;
    "cat_name" = "Dining & Nightlife";
},
    {
    0 =         {
        "subcat_id" = 5;
        "subcat_name" = Massage;
    };
    1 =         {
        "subcat_id" = 6;
        "subcat_name" = Facial;
    };
    2 =         {
        "subcat_id" = 7;
        "subcat_name" = "Manicure / Pedicure";
    };
    3 =         {
        "subcat_id" = 8;
        "subcat_name" = Tanning;
    };
    4 =         {
        "subcat_id" = 9;
        "subcat_name" = "Hair Salon";
    };
    5 =         {
        "subcat_id" = 10;
        "subcat_name" = "Hair Removal";
    };
    6 =         {
        "subcat_id" = 11;
        "subcat_name" = Spa;
    };
    7 =         {
        "subcat_id" = 12;
        "subcat_name" = "Teeth Whitening";
    };
    8 =         {
        "subcat_id" = 13;
        "subcat_name" = "Eye & Vision";
    };
    9 =         {
        "subcat_id" = 15;
        "subcat_name" = "Cosmetic & Beauty Treatments";
    };
    "cat_id" = 4;
    "cat_name" = "Health & Beauty";
},
    {
    0 =         {
        "subcat_id" = 17;
        "subcat_name" = Pilates;
    };
    1 =         {
        "subcat_id" = 18;
        "subcat_name" = Yoga;
    };
    2 =         {
        "subcat_id" = 19;
        "subcat_name" = Gym;
    };
    3 =         {
        "subcat_id" = 20;
        "subcat_name" = "Boot Camp";
    };
    "cat_id" = 16;
    "cat_name" = Fitness;
},
    {
    0 =         {
        "subcat_id" = 22;
        "subcat_name" = "Men's Clothing";
    };
    1 =         {
        "subcat_id" = 23;
        "subcat_name" = "Women's Clothing";
    };
    2 =         {
        "subcat_id" = 24;
        "subcat_name" = "Food & Grocery";
    };
    3 =         {
        "subcat_id" = 25;
        "subcat_name" = "Wine & Liquor";
    };
    4 =         {
        "subcat_id" = 26;
        "subcat_name" = "Home Services";
    };
    5 =         {
        "subcat_id" = 27;
        "subcat_name" = "Rental Car/ Car Wash/ Car Repair";
    };
    6 =         {
        "subcat_id" = 53;
        "subcat_name" = "Product / Service Discounts";
    };
    "cat_id" = 21;
    "cat_name" = "Retail & Services";
},
    {
    0 =         {
        "subcat_id" = 29;
        "subcat_name" = Museums;
    };
    1 =         {
        "subcat_id" = 30;
        "subcat_name" = "Wine Tasting";
    };
    10 =         {
        "subcat_id" = 42;
        "subcat_name" = "Dance Classes";
    };
    11 =         {
        "subcat_id" = 50;
        "subcat_name" = "Family Fun";
    };
    2 =         {
        "subcat_id" = 31;
        "subcat_name" = "City Tours";
    };
    3 =         {
        "subcat_id" = 32;
        "subcat_name" = "Comedy Clubs";
    };
    4 =         {
        "subcat_id" = 33;
        "subcat_name" = Theater;
    };
    5 =         {
        "subcat_id" = 34;
        "subcat_name" = Concerts;
    };
    6 =         {
        "subcat_id" = 35;
        "subcat_name" = "Education & Personal Development";
    };
    7 =         {
        "subcat_id" = 36;
        "subcat_name" = Golf;
    };
    8 =         {
        "subcat_id" = 38;
        "subcat_name" = Bowling;
    };
    9 =         {
        "subcat_id" = 39;
        "subcat_name" = "Sporting Events";
    };
    "cat_id" = 28;
    "cat_name" = "Activities & Adventures";
},
    {
    0 =         {
        "subcat_id" = 44;
        "subcat_name" = Others;
    };
    1 =         {
        "subcat_id" = 56;
        "subcat_name" = "Accommodation and Holidays";
    };
    "cat_id" = 43;
    "cat_name" = Others;
},
    {
    0 =         {
        "subcat_id" = 46;
        "subcat_name" = "Pet Grooming Services";
    };
    "cat_id" = 45;
    "cat_name" = Pets;
},
    {
    0 =         {
        "subcat_id" = 52;
        "subcat_name" = "Car Servicing / Repairs";
    };
    "cat_id" = 51;
    "cat_name" = "Car Servicing / Repairs";
}
)

最佳答案

您在问题中发布的内容不是 JSON。它最初可能是作为 JSON 数据传输的。但该帖子显示了属性列表格式的数据结构。请注意,某些字符串是 HTML 或 XML 编码的,这会在以后引起问题。您应该在将其作为 JSON 传输之前从源头修复此问题。

现在您发布的结果是包含更多字典的字典数组。最外面的数组是类别列表。每个类别都以字典形式给出,其中包含其自己的名称和 ID 以及子类别。最里面的字典是包含其 ID 和名称的子类别。

类别字典有些问题,因为混合了两个东西,并且是字典和数组的混合。很难访问子类别。

你的代码可能像这样:

NSArray* categoryList = [someJSONParser parse];
for (NSDictionary* category in categoryList ) {
    NSString* categoryName = [category objectForKey: @"cat_name"];
    NSNumber* categoryIdObj = [category objectForKey: @"cat_id"];
    int categoryId = [categoryIdObj intValue];

    int index = 0;
    NSDictionary* subcategory = [category objectForKey: [NSString stringWithFormat: @"%d", index] ];
    while (subcategory != nil) {
        NSString* subcategoryName = [subcategory objectForKey: @"subcat_name"];
        NSNumber* subcategoryIdObj = [subcategory objectForKey: @"subcat_id"];
        int subcategoryId = [subcategoryIdObj intValue];

        index++;
        subcategory = [category objectForKey: [NSString stringWithFormat: @"%d", index] ];
    }
}

关于iphone - 复杂Json解析结果格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577518/

相关文章:

iphone - 将新时间添加到总时间中

java - 错误 : Could not find action or result No result defined for action action. 部分和结果 {"col1":"col1","col2":"col2"}

python - 将curl命令从google-colab转换为python脚本

asp.net-mvc-4 - ASP.NET MVC 4 返回 Json 导致双 json 或空数据

asp.net-mvc - ASP.NET MVC : how to create a JsonResult based on raw Json Data

c# - 在 C# 中将 JsonResult 转换为不同的对象

ios - 使用 Xcode 和 Swift 创建的 iOS 应用程序中状态栏的自定义背景颜色

iphone - 更新数据并在 UITableView iOS 上显示

iphone - 解包可选值时出错 AND dequeueReusableCellWithIdentifier( :cell identifier)

javascript - 显示本地 JSON 文件中的数据