iphone - 如何获取动态 JSON

标签 iphone ios objective-c json cocoa-touch

我正在尝试获取下面的 JSON,因为它的标签都是动态的(不是固定的)。我不知道如何正确获取它们。

{
  Level1: {
    row1: {
      1: "on",
      2: "off",
      3: "off",
      4: "on",
      5: "on",
      6: "on",
      7: "on",
      8: "on",
      9: "on",
      10: "on",
      11: "on",
      12: "on",
      13: "on",
      14: "on",
      15: "on",
      16: "on",
      17: "on",
      18: "on",
      19: "on",
      20: "on",
      attr: {
        total: "20",
        type: "Gold"
      }
    },
    row10: {
      1: "on",
      2: "on",
      3: "on",
      4: "on",
      5: "on",
      6: "on",
      7: "on",
      8: "on",
      9: "on",
      10: "on",
      11: "on",
      12: "on",
      13: "on",
      14: "on",
      15: "on",
      16: "on",
      17: "on",
      18: "on",
      19: "on",
      20: "on",
      attr: {
        total: "20",
        type: "Bronze"
      }
    }
  },
  Level3: {
    row1: {
      1: "on",
      2: "on",
      3: "on",
      4: "on",
      5: "on",
      6: "on",
      7: "on",
      8: "on",
      9: "on",
      10: "on",
      11: "on",
      12: "on",
      13: "on",
      14: "on",
      15: "on",
      16: "on",
      17: "on",
      18: "on",
      19: "on",
      20: "on",
      attr: {
        total: "20",
        type: "Gold"
      }
    },
    row5: {
      1: "on",
      2: "on",
      3: "on",
      4: "on",
      5: "on",
      6: "on",
      7: "on",
      8: "on",
      9: "on",
      10: "on",
      11: "on",
      12: "on",
      13: "on",
      14: "on",
      15: "on",
      16: "on",
      17: "on",
      18: "on",
      19: "on",
      20: "on",
      attr: {
        total: "20",
        type: "Bronze"
      }
    }
  }
}

问题在于,在这个数量的级别中,行及其内部也是动态的。在此我需要获取所有行的开/关值,水平虎钳。我怎样才能做到这一点?

这是我到目前为止尝试过的:

for (NSString *key in [self.mGetDataDict allKeys]) {
    NSLog(@"Accessing .... %@", key);
    level = key;
    for (NSString *rowKey in self.mGetDataDict[key]) {
        NSLog(@"%@", rowKey);
        [arrRows addObject:rowKey];
        for (NSString *valueKey in self.mGetDataDict[key][rowKey]) {
            // NSLog(@"%@ -> %@", valueKey, self.mGetDataDict[key][rowKey][valueKey]);
            if ([valueKey isEqualToString:@"attr"]) {
                dictRow = self.mGetDataDict[key][rowKey][valueKey];
            }
        }
        NSLog(@"--------ROW OVER------------%@\n", dictRow);
        [arrSeats addObject:[dictRow valueForKey:@"total"]];
        [arrType addObject:[dictRow valueForKey:@"type"]];
        NSLog(@"--------seats in row------------%@\n", arrSeats);

        NSString *row = [NSString stringWithFormat:@"%@", [arrSeats objectAtIndex:0]];
        rows = [row integerValue];
    }
    NSString *num = [arrSeats valueForKeyPath: @"@sum.self"];
    tot = [num integerValue];
    [arrTot addObject:[NSString stringWithFormat:@"%d", tot]];
    tot = 0;
    [arrSeats removeAllObjects];
    NSLog(@"--------ROW OVER tot seats------------%@\n", arrTot);
    NSLog(@"--------------------seats:%@\n", num);
    NSLog(@"--------------------\n");
}

最佳答案

您需要做的是将该响应放入一个对象(在您的例子中是一个 NSDictionary),然后通过键进行枚举以将其解析出来。这很容易做到:

您可能想要使用 NSDictionary 方法 - enumerateKeysAndObjectsWithOptions:usingBlock:

这是类引用: http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSDictionary_Class/Reference/Reference.html

关于iphone - 如何获取动态 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836004/

相关文章:

ios - 如何在 Swift 3 中设置 UIButton 的图像?

ios - 越狱调整学习 - 带有 initWithFrame 的 UIViewController(单独文件) - 提供的代码

ios - 阴影没有完全扩展 UIView 的宽度

objective-c - 在 Objective-C 中获取文件的大小

iphone - 如何为 Sprite 图像赋予波纹 Action

iphone - 在 iOS 上绘制带阴影的矩形

iOS自定义键盘内存限制

ios - 如何嵌入 Facebook FBSessionLoginBehaviorForcingWebView?

iphone - 在 24 小时 iphone 中没有获取日期 whien 时间格式

iphone - 用于更改表格排序列的 iOS 人机界面指南