2014-05-24 8 views
0

Я разбор данных JSON по этой ссылке:Исключения при анализе данных JSON

http://twyst.in/api/v1/near/30/30

Поскольку данные слишком большой, я отправляю только (проблемы) соответствующие данные здесь:

{ «информация»: «[{\" outlet \ ": {\" __ v \ ": 1, \" _ id \ ": \" 5316d59326b019ee59000026 \ ", \" photos \ ": [], \" twyst_meta \ ": {\ "recommend_list \": [], \ "отзывы \": []}, \ "outlet_meta \": {\ "ссылки \": [], \ "статус \": \ "активный \", \» счета \ ": [\" 531574eeae738d654c00000a \ "\ "535a1a1e827651ca03000122 \"]}, \ "атрибуты \": {\ "dine_in \": правда, \ "открытый \": правда, \" air_conditioning \ ": \" Недоступно \ ", \" парковка \ ": \" Доступно \ ", \" бронирование \ ": \" Не обязательно \ ", \" wifi \ ": \" Недоступно \ ", \" теги \ ": [\" Pizza \ ", \" Pasta \ ", \" Italian \ ", \" Galleria \ ", \" DLF Phase 4 \ "], \" payment_options \ ": [\" cash \ " \ "AMEX \", \ "виза \", \ "мастер \"] \ "кухни \": [\ "итальянский \", \ "Пицца \", \ "Gelato \"], \ "тайминги \ ": \" 11 AM - 11 PM \ ", \" cost_for_two \ ": {\" min \ ": 3, \" max \ ": 4}}, \" links \ ": {\" other_urls \ ": [], \ "youtube_url \": \ "\", \ "twitter_url \": \ "\", \ "facebook_url \": \ "https://www.facebook.com/pages/Crusty-gourmet-pizza-more/390843954384130 \", \ "website_url \": \ "\"}, \ "контакт \": {\ "письма \": {\ "электронной почты \": \ "[email protected] \", \ "человек \": \ "\"}, \ "телефонов \": {\» номер \ ": \" \ "\ "стационарный \": \ "02355156616 \", \ "reg_mobile \": [{\ "_ ид \": \ "4639320000e4532779b17de7 ​​\", \ "Num \": \" 9134000410 \ "}

Это не конец данных JSON, он идет на ...

Но когда выполняется следующая строка кода, я получаю исключение JSON. Метод e.printStackTrace() сообщает мне, что существует ошибка типаMismatch.

 JSONObject object = new JSONObject(str);  //1 
     JSONArray array = object.getJSONArray("info"); //2 

Я попытался заменить строку 2 со следующим кодом:

 JSONObject newObject = object.getJSONObject("info"); 

Но и здесь я столкнулся с той же проблемой.

Я проверил полные данные, это правильно, без синтаксической ошибки. Может ли кто-нибудь помочь мне с проблемой? Может ли наличие двойных кавычек перед запуском JSONArray быть корнем этой проблемы?

Спасибо.

+0

Я думаю, что это будет. Он будет интерпретировать его как строку. – Mgamerz

+0

Что значит? Наличие двойных кавычек будет проблемой, или она будет анализировать, я не делаю это правильно? – Rajat

ответ

2

info не является массивом или объектом. Это строка, которая просто содержит JSON-кодированное представление другого массива. Вы должны будете получить эту строку и запустить его через второй декодирования JSON прохода:

JSONArray array = new JSONArray(object.getString("info")); 
+0

Вот что я пытался сказать в приведенном выше комментарии. Mobile слишком медленный :) – Mgamerz

+0

@Rajat Первый элемент массива - это объект, поэтому вы можете вызвать 'getJSONObject (0)' в массиве для получения объекта, а затем использовать его ключи, если это то, что вы имеете в виду. – Boann

+0

@Boann: OK Я понимаю. Сначала я неправильно понял. – Rajat

0
JSONObject json; 
Object  info; 
JSONArray infoJsonArray; 
JSONObject infoObject; 
json = new JSONObject(str); 

Object info= json.get("info"); 
if (info instanceof JSONArray) { 
// It's an array 
infoJsonArray = (JSONArray)info; 
} 
else if (info instanceof JSONObject) { 
// It's an object 
infoObject = (JSONObject)info; 
} else { 
// It's something else, like a string or number 
} 
Смежные вопросы