我正在使用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