我有这样的json feed:
{
result = {
cars = {
brand = {
fields = {
name = {
id = 1234;
value = "Opel Astra";
};
description = {
id = 4432;
value = "Some description";
};
};
fields = {
name = {
id = 1453;
value = "Opel Omega";
};
description = {
id = 4430;
value = "Some description";
};
...
};
};
};
当我解析这个时,我得到一个数组中的所有对象而不是一个单独的字符串,这就是我想要的。
我这样做了:
NSArray *result = [[res objectForKey:@"result"]valueForKeyPath:@"cars.brand.fields.name.value"];
NSLog(@"%@" , [result objectAtIndex:0]):
输出结果为:
(
"Opel Astra",
"Opel Omega",
....
),
如何一次获得一个字符串,而不是包含大量字符串的数组?
谢谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
使用NSJSONSerialization将JSON数据检索到基础对象中。
另见post。
答案 2 :(得分:0)
您还可以将JSON字符串作为id-Value处理。 然后你调用[jsonString objectForKey:@“result”]。
试试这个功能,它对我来说很完美;)
- (id) objectInObject:(NSObject *) rootObject forPath:(NSString *) aKeyPath {
NSArray *keys = [aKeyPath componentsSeparatedByString:@"."];
NSObject *anObject = rootObject;
for (NSString *aKey in keys) {
int arrayIndex = 0;
bool isArray = NO;
// check array
if ([[aKey substringToIndex:2] isEqualToString:@"i:"]) {
isArray = YES;
NSArray *values = [aKey componentsSeparatedByString:@":" ];
arrayIndex = [[values objectAtIndex:1] intValue];
}
if (isArray) {
anObject = [(NSArray *) anObject objectAtIndex:arrayIndex];
} else {
anObject = [(NSDictionary *) anObject objectForKey:aKey];
}
}
return anObject;
}
答案 3 :(得分:0)
使用SBJson作为您的JSON lib。然后只需使用这行代码(响应是一个字符串),您将获得所需的预期输出。
NSMutableDictionary *responseJSON = [response JSONValue];