2014-01-24 3 views
1

Here's JSON, который поставляет мой файл PHP:преобразовать JSON мо в JSONObject

[{"id":"408","punktezahl":"15","name":"testname","email":"hsksjs","datum":"24.01.14 17:11","wohnort":"Vdhdhs","newsletter":"J"}] 

При попытке доступа к объекту JSON как этот

public void connect(){ 
    System.out.println("%%%%%%%%%%%%%%%%%1"); 
    Thread t = new Thread(){ 
     @Override 
     public void run() { 
    try { 
     System.out.println("%%%%%%%%%%%%%%%%%2"); 
     HttpParams params = new BasicHttpParams(); 
     HttpConnectionParams.setSoTimeout(params, 0); 
     HttpClient httpClient = new DefaultHttpClient(params); 
     String urlString = "http://url"; 
     //prepare the HTTP GET call 
     HttpGet httpget = new HttpGet(urlString); 
     //get the response entity 
     HttpEntity entity = httpClient.execute(httpget).getEntity(); 
     System.out.println("%%%%%%%%%%%%%%%%%3"); 
     if (entity != null) { 
      //get the response content as a string 
      String response = EntityUtils.toString(entity); 
      //consume the entity 
      entity.consumeContent(); 

      // When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources 
      httpClient.getConnectionManager().shutdown(); 

      //return the JSON response 

      JSONObject parentObject = new JSONObject(response); 
      JSONObject userDetails = parentObject.getJSONObject("output"); 


      String name = userDetails.getString("name"); 
      System.out.println("HEEEEEEEEEEEEEEEEEEEEEEEEEEEE" + name); 
       } 



    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}; 
t.start(); 
} 

я получаю следующее сообщение об ошибке :

01-24 18:18:21.746: W/System.err(20673): org.json.JSONException: Value [{"id":"408","datum":"24.01.14 17:11","punktezahl":"15","email":"hsksjs","newsletter":"J","wohnort":"Vdhdhs","name":"testname"}] of type org.json.JSONArray cannot be converted to JSONObject 
01-24 18:18:21.746: W/System.err(20673): at org.json.JSON.typeMismatch(JSON.java:111) 
01-24 18:18:21.746: W/System.err(20673): at org.json.JSONObject.<init>(JSONObject.java:159) 
01-24 18:18:21.746: W/System.err(20673): at org.json.JSONObject.<init>(JSONObject.java:172) 
01-24 18:18:21.746: W/System.err(20673): at com.wuestenfest.jagdenwilli.Highscore_zeigen$1.run(Highscore_zeigen.java:82) 

Где моя ошибка?

+0

Это потому, что у вас есть массив json в качестве базового объекта, в котором у вас есть объект json. – NullPointerException

ответ

2

Ваш отзыв JSONArray не JSOnObject.

Меняет

JSONObject parentObject = new JSONObject(response); 

в

JSONArray jsonarray = new JSONArray(response); 

Вашего JSON

[ // json array node 
    { // jsson onject npode 
     "id": "408", 
     "punktezahl": "15", 
     "name": "testname", 
     "email": "hsksjs", 
     "datum": "24.01.14 17:11", 
     "wohnort": "Vdhdhs", 
     "newsletter": "J" 
    } 
] 

Я не вижу JSon объекта output либо в указанном выше формате JSON. Таким образом,

JSONObject userDetails = parentObject.getJSONObject("output"); 

также является неправильным.

Синтаксический

JSONArray jsonarray = new JSONArray(response); 
    JSONObject jb =(JSONObject) jsonarray.getJSONObject(0); 
    String name= jb.getString("name"); 
+0

Отлично, теперь я понимаю разницу между JSONArray и JSONObject, спасибо! – user896692

1

Проблема в том как исключение описывает: вы пытаетесь разобрать ваш объект ответа в JSONObject, но это на самом деле JSONArray (как видно в квадратных скобках). Вместо этого проанализируйте его как JSONArray и получите первый элемент из массива, который будет вашим желаемым JSONObject.

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