我正在使用yajl_JSON库来从JSON响应中为bit.ly url缩短服务生成NSDictionary。当父键未知时,在嵌套的NSDictionary中查找对象?
JSON响应:
{
errorCode = 0;
errorMessage = "";
results = {
"http://www.example.com/" = {
hash = 4H5keM;
shortKeywordUrl = "";
shortUrl = "http://bit.ly/4BN4qV";
userHash = 4BN4qV;
};
};
statusCode = OK;
}
为了澄清, “http://example.com” 是不是孩子 “成果”。解析时,我有三个三个嵌套的NSDictionaries。
问题是“http://example.com”是任意键。我想在不知道密钥的情况下访问密钥数据。具体来说,我可以得到“shortUrl”的价值。 这怎么能有效地完成?有没有一种方法,使一个的keyPath这将是这样的:
"results.*.shortUrl"
我已经通过执行下列步骤完成的,但我想这是不是做的方法:
// Parse the JSON responce
NSDictionary *jsonResponce = [data yajl_JSON];
// Find the missing key
NSString *missingKey = [[[jsonResponce valueForKeyPath:@"results"] allKeys] objectAtIndex:0];
// Log the value for "shortURL"
NSLog(@"It is : %@", [[[jsonResponce objectForKey:@"results"] valueForKeyPath:missingKey] objectForKey:@"shortUrl"]);
如果我使用的是XML,它可能很简单,这使我相信我没有正确使用json/objective-c。
我知道这将是可能存储“example.com”在这种情况下,当我提出请求Bit.ly,但...这将是很好的知道未来......
谢谢。
这并不遗憾的是返回任何作为“shortURL”父母不是“结果”。 “结果”是“shortURL”的祖父母。 – Ross 2009-12-17 16:20:12
哦,对不起,我误读了结构。 – Chuck 2009-12-17 16:35:08
目前的版本是固定的,应该工作,顺便说一句。 – Chuck 2009-12-17 20:22:50