2013-07-05 3 views
0

JSON-строка/массив я получаю в качестве HTTP-ответ в одной строке, например:Загрузка JSON-массив не удается

[{ 
     "haendlerName": "Zielpunkt", 
     "shops": [{ 
      "shopId": 243779, 
      "ort": "Wien", 
      "strasse": "Erdbergstraße 61", 
      "plz": "1030", 
      "lat": 48.19867, 
      "lon": 16.400263, 
      "distance": 0.14937061106081023, 
      "openinghours": null 
     }], 
     "imageLink": "http://images.schnapp.at/images/zielpunkt__e349e2a937b5bf4f78e0fb3063b1fca8.png", 
     "account_id": 171619 
    }, ... 

I'm нагрузка это так:

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet(url); 
response = httpclient.execute(httpGet); 
HttpEntity resEntity = response.getEntity(); 
String response2=EntityUtils.toString(resEntity); 
JSONArray finalResult = new JSONArray(response2); 

EDIT: РАБОЧАЯ ВЕРСИЯ!

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet(url);  
response = httpclient.execute(httpGet); 
String json = EntityUtils.toString(response.getEntity()); 
finalResult = new JSONArray(json); 

Но в самой последней строке он выходит из строя, только я получил ошибку NullPointerException. Я проверил содержимое токена, кажется, все в порядке. Также проверен на весь ввод (строка из http-response), это действительная строка JSON.

Что можно сказать о том, что JSONObjects в основном массиве также содержат подматрицу.

Любая идея, которая может вызвать сбой? Или я делаю что-то совершенно неправильное?

ответ

1

удалить BufferedReader, String json и JSONTokener tokener. Попробовать этот путь

String json = EntityUtils.toString(response.getEntity()); 
JSONArray finalResult = new JSONArray(json); 

EntityUtils.toString считывает содержимое Entity и возвращает его в качестве String

следует заменить:

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
    String json = reader.readLine(); 
    JSONTokener tokener = new JSONTokener(json); 
    JSONArray finalResult = new JSONArray(tokener); 

с

String json = EntityUtils.toString(response.getEntity()); 
JSONArray finalResult = new JSONArray(json); 
+0

работа это не распространяется, сбои в первой строке. –

+0

@BenjaminSchwalb Crashes? как вы получаете json, сделав http-запрос? – Raghunandan

+0

Вы можете обновить свой вопрос и показать исходный код? – Blackbelt

Смежные вопросы