鉴于以下JSON有效负载,我想提取" 023"来自keyB-> key2:
JSON Payload:
{
"keyA" : {"lon": 139, "lat" : 35},
"keyB" : [ {"key1" : "value", "key2" : "023"} ]
}
这是我申请的代码:
NSDictionary * subResults = jsonResult[@"keyB"];
NSLog(@"VALUE: %@", [subResults valueForKey:@"key2"])
但是,该值打印如下:
VALUE: (
023
)
我想摆脱括号"("。我是否以错误的方式接近提取?
答案 0 :(得分:3)
首先,你给出的json不是有效的儿子:(你有很多引用。如果我们这样逃避:
{"keyA":{"lon":139,"lat":35},"keyB":[{"key1":"value\" clouds","key2":"023"}]}
然后,没关系。 现在,你在这里有一个儿子对象,包含2个键(A和B)。 KeyB与json数组相关联 意思是:
jsonResult[@"keyB"];
不返回NSDictionnary,而是返回包含1个NSDictionary的NSArray。 现在,如果您尝试获取值“023”,则应使用
NSString str = jsonResult[@"keyB"][0][@"key2"]; // return "023"
也许
int twentyThree = str.intValue;
答案 1 :(得分:2)
括号显示您想要的值在数组中。
NSData strAsData = …;
NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:strAsData options:0 error:nil];
NSArray *subResults = jsonResult[@"keyB"];
NSDictionary *subSubResults = subResults[0];
NSLog(@"VALUE: %@", subSubResults[@"key2"]);
由于该数组只有一个项目,因此您可以使用对-lastObject或-firstObject的调用