我正在尝试获取下面的 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:
关于iphone - 如何获取动态 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836004/