Разберите JSON с "нечитаемым" контентом

У меня есть JSON из телефонной книги-службы, которую я пытаюсь интерпретировать.

Ответ дает мне 6 пунктов. И основным пунктом является "Данные". Внутри этого элемента есть сумасшедшая строка со многими тегами.

items = [items valueForKeyPath:@"Data"];


{
"qry": "gørild tollefsen aas",
"result": {
 "hitLinesBeforeFilter": 1,
 "approxHits": 1,
 "userID": 56699100,
 "1": {
 "listing": {
 "table": "listing",
 "id": "1070262",
 "duplicates": [
 {
 "table": "listing",
 "id": "1070262:0",
 "idlinje": "P7IBCL",
 "tlfnr": "99299999",
 "etternavn": "Aas",
 "fornavn": "Gørild Tollefsen",
 "veinavn": "Mo",
 "husnr": "42",
 "postnr": "5729",
 "virkkode": "P",
 "apparattype": "M",
 "telco": "MF",
 "kilde": "P",
 "prioritet": "0",
 "fodselsdato": "1988-07-13",
 "kommunenr": "1252",
 "kid": "12611829",
 "poststed": "Modalen",
 "kommune": "Modalen",
 "fylke": "Hordaland",
 "landsdel": "V"
 }
 ]
 }
 },
 "dummy": null
}

}

Как я могу получить "Форнавн", "Etternavn" и "tlfnr" в хорошем смысле этого в NSArray?

Для меня контент не похож на JSON.

Если я попытаюсь отладить подсчет этого массива, приложение выйдет со следующей ошибкой:

reason: '-[__NSCFString count]: unrecognized selector sent to instance 0x14f53f80'

РЕДАКТИРОВАТЬ:

Этот хороший трюк сделал это для меня:

NSError *error;
 NSString *tekstdata = [items valueForKeyPath:@"Data"];
 NSDictionary *JSON =
 [NSJSONSerialization JSONObjectWithData: [tekstdata dataUsingEncoding:NSUTF8StringEncoding]
 options: NSJSONReadingMutableContainers
 error: &error];


 items = [JSON valueForKeyPath:@"result.1.listing.duplicates"];

Мне пришлось снова использовать сериализацию, очевидно, так как в оригинальном JSON был JSON. Спасибо за помощь. Вы ставите меня в правильном направлении.

2 ответа

Если я понимаю ваш вопрос как один из упомянутых комментаторов, очистите Json, как если бы он был inion.

Используйте этот инструмент, чтобы увидеть, как формируются слои, http://jsonviewer.stack.hu/

Кроме того, вы можете захотеть использовать NSMutableArray, чтобы вы могли удалить и/или переустановить массив.

Надеюсь, я смог помочь.


Чтобы получить только несколько интересных элементов из вложенного файла JSON, я бы предложил использовать AFNetworking library AFJSONRequestOperation для анализа файла JSON и поместить результаты в NSDictionary. Затем вы можете запросить NSDictionary с помощью метода [myDictionary objectForKey:@"Fornavn"] для получения значения.

licensed under cc by-sa 3.0 with attribution.