Я использую библиотеку yajl_JSON для создания NSDictionary из ответа JSON для службы сокращения URL bit.ly.
Ответ JSON:
{
errorCode = 0;
errorMessage = "";
results = {
"http://www.example.com/" = {
hash = 4H5keM;
shortKeywordUrl = "";
shortUrl = "http://bit.ly/4BN4qV";
userHash = 4BN4qV;
};
};
statusCode = OK;
}
Чтобы уточнить, "http://example.com" не является дочерним" результатом ". И при разборе у меня есть 3 три вложенных 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 / target-c правильно.
Я знаю, что было бы возможно сохранить "example.com" в этой ситуации, когда я сделаю запрос к Bit.ly, но ... было бы хорошо знать в будущем ...
Спасибо.