2015-01-29 6 views
1

Я получаю следующее как String ответ от webserveice:не в состоянии разобрать JSON массив правильно

[ 
    [ 
     { 
      "dgtype": "adhoc", 
      "subtypename": "Person", 
      "subtypedesc": "null", 
      "summary": "Junaid (Self)", 
      "subtype": "person", 
      "birthdate": "1995-1-23 ", 
      "name": "Junaid (Self)" 
     }, 
     { 
      "dgtype": "adhoc", 
      "subtypename": "Job", 
      "subtypedesc": "null", 
      "summary": "Exa", 
      "subtype": "person", 
      "birthdate": "2010-01-30", 
      "name": "Junaid (Self)" 
     } 
    ] 
] 

В Java я пытаюсь сделать следующее:

JSONArray jArray = new JSONArray(result); 

       System.out.println("Response: "+jArray); 

       for(int i = 0; i<= jArray.length(); i++){ 
        try { 
         JSONObject oneObject = jArray.getJSONObject(i); 

         String dgtype = oneObject.getString("dgtype"); 
         String subtypename = oneObject.getString("subtypename"); 
         String subtypedesc = oneObject.getString("subtypedesc"); 
         String summary = oneObject.getString("summary"); 
         String subtype = oneObject.getString("subtype"); 
         String birthdate = oneObject.getString("birthdate"); 
         String name = oneObject.getString("name"); 

         System.out.println(i); 
         System.out.println("dgtype: "+dgtype); 
         System.out.println("subtypename: "+subtypename); 
         System.out.println("subtypedesc: "+subtypedesc); 
         System.out.println("summary: "+summary); 
         System.out.println("subtype: "+subtype); 
         System.out.println("birthdate: "+birthdate); 
         System.out.println("name: "+name); 




        } catch (JSONException e) { 
         System.out.println("JSON Exception: "+e); 
        } 
       } 

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

JSON Exception: org.json.JSONException: Value 
[ 
    { 
     "dgtype": "adhoc", 
     "subtypename": "Person", 
     "subtypedesc": "null", 
     "summary": "Junaid (Self)", 
     "subtype": "person", 
     "birthdate": "1995-1-23 ", 
     "name": "Junaid (Self)" 
    }, 
    { 
     "dgtype": "adhoc", 
     "subtypename": "Job", 
     "subtypedesc": "null", 
     "summary": "Exa", 
     "subtype": "person", 
     "birthdate": "2010-01-30", 
     "name": "Junaid (Self)" 
    } 
] 
at 0 of type org.json.JSONArray cannot be converted to JSONObject 
JSON Exception: org.json.JSONException: Index 1 out of range [0..1) 

Я следую this пример , Где я иду не так? Также обратите внимание на отсутствие длинных скобок в фрагменте исключений.

ответ

5

У вас есть два массива, один внутри другого:

[ 
    [ 
    //Your objects 
    ] 
] 

Вы можете либо формат изменения данных, так что есть только один массив или изменить код:

JSONArray outer = new JSONArray(result); 
JSONArray jArray = outer.getJSONArray(0); 
+0

Я думаю, что я изменил формат данных, я просто понял то же самое! :) – User3

+0

DOne mate, спасибо! Признание через пять минут! ~ – User3

1

jArray JSONArray содержат другой JSONArray, которые содержат JSONObeject, поэтому сначала получите JSONArray, а затем получите от него весь JSONObject:

 JSONArray oneArray = jArray.getJSONArray(i); 
     for(int j = 0; j<= oneArray.length(); j++){ 
      JSONObject oneObject = oneArray.getJSONObject(j); 
      // get dgtype,subtypename,subtypedesc,.. from oneObject 
     } 
+0

Спасибо вам за процветание :) – User3

1

Как говорится, 'JSONArray не могут быть преобразованы в JSONObject', У вас есть массив в другой массив, так

JSONArray jArray1 = new JSONArray(result); 

затем

JSONArray jArray = jArray1.getJSONArray(0); 

Теперь он будет работать.

0
   for(int i = 0; i<= jArray.length(); i++){ 
        final JSONArray innerArray = jArray.getJSONArray(i); 
        for (int a = 0; a < innerArray.length(); a++) { 
        try { 
         final JSONObject oneObject = innerArray.getJSONObject(i);  
         String dgtype = oneObject.getString("dgtype"); 
         String subtypename = oneObject.getString("subtypename"); 
         String subtypedesc = oneObject.getString("subtypedesc"); 
         String summary = oneObject.getString("summary"); 
         String subtype = oneObject.getString("subtype"); 
         String birthdate = oneObject.getString("birthdate"); 
         String name = oneObject.getString("name"); 

         System.out.println(i); 
         System.out.println("dgtype: "+dgtype); 
         System.out.println("subtypename: "+subtypename); 
         System.out.println("subtypedesc: "+subtypedesc); 
         System.out.println("summary: "+summary); 
         System.out.println("subtype: "+subtype); 
         System.out.println("birthdate: "+birthdate); 
         System.out.println("name: "+name); 
        } catch (JSONException e) { 
         System.out.println("JSON Exception: "+e); 
        } 
       } 
      } 
Смежные вопросы