Итак, последние два дня я пытался получить данные из и в файл JSON, потому что он имеет несколько уровней и одинаковых имен. Я не создал этот файл и не могу изменить структуру, поэтому мне нужно заставить ее работать так, как есть. Для Pharse JSON один уровень не проблема, и он отлично работает, мне нужно, чтобы получить отдельный блок данных от «GOV» и «PRIV», тогда мне нужен блок данных «GENERAL» и «LOCAL» и в тех, которые мне нужны чтобы получить информацию о больнице в виде блока, но также и отдельные значения. Теперь я пытаюсь сделать это в течение двух дней, и я знаю, что я делаю что-то неправильно, но не могу понять это. блок «GOV», но затем в окне вывода отображается массив с данными доступа (< __NSCFArray 0x7fe711f58800>) и вывод ... Я не могу разбить этот вывод, и это то, что мне нужно, потому что каждое значение должно быть в текстовый файл в ячейке tableview.Я знаю, что [} обозначает NSDictionary [] обозначает NSArray, и я много читал о JSON, и я получил концепцию, но есть мало для не понятной мне информации, когда речь идет о многоуровневых JSON и равные имена (больница) в этом случае. Я пробовал все доступные варианты I coul d найти здесь, в StackOverflow, но не успешно. Так что, если кто-нибудь могут толкать меня в правильном направлении, я буду .. часть благодарна кода:Многоуровневое чтение и запись JSON IOS8
NSURL *url = [NSURL URLWithString:getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];
_jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
_AppListArray = [[NSMutableArray alloc] init];
NSArray *wrapper= [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *avatars = [wrapper objectAtIndex:0];
for(NSDictionary *apps in _jsonArray) {
if([[apps objectForKey:@"title"] isEqualToString:@"GOV"]){
NSDictionary*tmp = [apps objectForKey:@"hospital"];
_AppListArray = [tmp objectForKey:@"area"];
}
}
//returns error because _ApplistArray is an array and it can't read the data from the objectkey
for (int i = 0; i < _jsonArray.count; i++)
{
NSString *appName = [[_AppListArray objectAtIndex:i] objectForKey:@"hospitalname"];
NSString *appCondition = [[_AppListArray objectAtIndex:i] objectForKey:@"condition"];
NSString *app avgrating = [[_AppListArray objectAtIndex:i] objectForKey:@"avgrating"];
[_AppListArray addObject:[[Applist alloc]initWithAppName:appName andAppCondition:appCondition andAppURL:appURL]];
}
_ApplistArray делает вернуть 1ste блока больницы данных, но как массив, и это были я застреваю .. Мне нужно получить еще один уровень глубже ..... Опять решение, вероятно, легко, но JSON - это то, с чем я никогда не работал, это мой первый выход. JSON, где мне нужно, чтобы получить данные из:
[
-{
-hospital: {
-area: [
-{
-hospital: [
-{
hospitalname: "ABC",
avgrating: "2,6",
condition: "UPDATE NEEDED",
},
-{
hospitalname: "DEF",
avgrating: "4,2",
condition: "FINE",
},
],
name: "GENERAL"
}
]
},
title: "GOV"
},
-{
-hospital: {
-area: [
-{
-hospital: [
-{
hospitalname: "GHI",
avgrating: "3",
condition: "INSTALL NEW",
},
-{
hospitalname: "JKL",
avgrating: "0",
condition: "NEW",
},
],
name: "LOCAL"
}
]
},
title: "PRIV"
}
]
Можете ли вы обновить весь JSON без каких-либо изменений на нем? – GoCrazy
Удалите черточки '(-)' из вашего json и воспользуйтесь этим сериализатором json: http://jsonviewer.stack.hu/. Полагаю, вы поймете это лучше. –
[{"hospital": {"area": [{"hospital": [{"hospitalname": "ABC", "avgrating": "2,6", "condition": "UPDATE NEEDED"}, {" hospitalname ":" DEF " "avgrating": "4,2", "состояние": "FINE"}], "имя": "GENERAL"}]}, "название": "GOV"}, {" больница ": {" area ": [{" hospital ": [{" hospitalname ":" GHI "," avgrating ":" 3 "," condition ":" INSTALL NEW "}, {" hospitalname ":" JKL "," «avragating»: «0», «condition»: «NEW»}], «name»: «LOCAL»}]}, «title»: «PRIV»}] – ECKO