Как разобрать мульти-массив JSON
Мне нужно проанализировать файл JSON, предоставляемый API Карт Google. Затем я использую AFNetworkingRequestHow, чтобы получить ответ JSON. Я построил этот словарь:
NSDictionary *jsonDict = (NSDictionary *) JSON;
NSArray *rows = [jsonDict objectForKey:@"rows"];
Но теперь, как мне добраться до первого поля значения тега продолжительности?
Файл JSON для анализа:
{
"destination_addresses" : [ "San Francisco, CA, USA", "Victoria, BC, Canada" ],
"origin_addresses" : [ "Vancouver, BC, Canada", "Seattle, WA, USA" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "1,527 km",
"value" : 1527251
},
"duration" : {
"text" : "15 hours 0 mins",
"value" : 54010
},
"status" : "OK"
},
{
"distance" : {
"text" : "112 km",
"value" : 111906
},
"duration" : {
"text" : "3 hours 1 min",
"value" : 10885
},
"status" : "OK"
}
]
}
}
3 ответа
Решение
Пытаться
NSDictionary *jsonDict = (NSDictionary *) JSON;;
NSArray *rows = jsonDict[@"rows"];
NSDictionary *row = rows[0];
NSArray *elements = row[@"elements"];
NSDictionary *element = elements[0];
NSDictionary *duration = element[@"duration"];
NSInteger value = [duration[@"value"] integerValue];
[json objectForKey:@"elements"]
является NSArray. Вы не можете инициализировать NSDictionary непосредственно с массивом.
(в JSON {и} обозначают пары ключ-значение, как NSDictionary, тогда как [и] разделяют упорядоченные списки, как NSArray, поэтому отображение выполняется как есть...)
Следующий думает, что вы понимаете время разработки, так что это может сильно помочь.
Вы можете использовать следующий код:
NSString *valueString = [[[[[rows objectAtindex:0]objectForKey:@"elements" ]objectAtindex:0]objectForKey:@"duration"] objectForKey:@"value"];
//if you want integer value
NSInteger value = [valueString integerValue];