2015-10-02 3 views
-1

у меня есть массив JSON, который возвращается, как этотПеребора JSon массива массивов

[{"item":"value"},{"item":"value"},{"item":"value"},{"item":"value"}] 

Я пытающийся перебрать этот массив и захватить «пункт» с кодом, например, как это ниже, однако значение никогда не схватился, я могу подтвердить, что массив имеет значения, но так или иначе это всегда возвращает нуль

ArrayList<ArrayList<Object>> mainList = new ArrayList<ArrayList<Object>>(); 

    String json = getJSON(url, null); 

    JSONObject jsonObject = null; 

    try { 
     jsonObject = new JSONObject(json); 

     int counter = 0; 

     JSONArray itemArray = new JSONArray(); 
     itemArray.put(jsonObject); 

     while(counter < itemArray.length()){ 

      //create an inner array 
      ArrayList<Object> innerList = new ArrayList<Object>(); 

      //grab the contents of the post 
      JSONObject item = itemArray.getJSONObject(counter); 

      //place items into inner array 
      innerList.add(counter + 1); 
      innerList.add(item.getString("item")); 


      //place inner array into main array 
      mainList.add(innerList); 

      counter++; 
     } 



     return mainList; 
    } catch (JSONException e) { 
     e.printStackTrace(); 

     return null; 
    } 

ответ

0

вы создаете массив в неправильном направлении:

new JSONArray(getJSON(url, null)); 
1

Существует мало, чтобы информация о вашей проблеме (StackTrace ??), но это не кажется правильным

item.getString("name"); 

попробовать

item.getString("item"); 
+0

возгласы жаль, что была ошибка, я изменил название пункта, чтобы сделать мой пункт более ясным –

+0

item.optString будет держать приложение от падения, если он когда-либо нуль. Просто проверьте пустую строку. –

0

я использовать этот

JSONParser parser = new JSONParser(); 

boolean downloaded = parser.downloadJSON(url, JSONParser.HTTP_GET); 
if (!downloaded) throw new Exception("Oops"); 

JSONObject root = parser.getRoot(); 

JSONArray list = parser.getList(root, "list"); 
if (list != null) 
{ 
    for (int i = 0; i < list.length(); i++) 
    { 
     JSONObject jo = list.getJSONObject(i); 
     if (jo == null) continue; 

     // let's go... 
    } 
} 

и это. ...

public class JSONParser 
{ 

    public static int HTTP_GET = 0; 
    public static int HTTP_POST = 1; 

    private String json; 

    // constructor 
    public JSONParser() 
    { 
     json = null; 
    } 

    /** 
    * Scarica il documento JSON e lo rende disponibile ai vari metodi sempre 
    * disponibili in questa classe 
    * 
    * @param url indirizzo url da cui scaricare il documento JSON 
    * @param type tipo di richiesta GET o HTTP 
    * @return indica se è stato scaricato, altrimenti lancia eccezione 
    */ 
    public boolean downloadJSON(String url, int type) throws Exception 
    { 
     try 
     { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpUriRequest httpRequest = type == HTTP_POST ? new HttpPost(url) : new HttpGet(url); 
      HttpResponse httpResponse = httpClient.execute(httpRequest); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      json = EntityUtils.toString(httpEntity); 

      return true; 
     } 
     catch (UnsupportedEncodingException ex) 
     { 
      WLogger.error("XMLParser", "UnsupportedEncodingException downloadJSON", ex); 
      throw ex; 
     } 
     catch (ClientProtocolException ex) 
     { 
      WLogger.error("XMLParser", "ClientProtocolException downloadJSON", ex); 
      throw ex; 
     } 
     catch (IOException ex) 
     { 
      WLogger.error("XMLParser", "IOException downloadJSON", ex); 
      throw ex; 
     } 

     // WHttpRequestAsyncTask task = new WHttpRequestAsyncTask(); 
     // task.setType(type); 
     // task.execute(url); 
     // json = task.getResult(); 
     // return json != null; 
    } 

    public void setJsonData(String json) 
    { 
     this.json = json; 
    } 

    public JSONObject getRoot() 
    { 
     try 
     { 
      return new JSONObject(json); 
     } 
     catch (JSONException ex) 
     { 
      WLogger.error("JSONParser", "getRoot error", ex); 
      return null; 
     } 
    } 

    public JSONArray getList(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || Utility.isNullOrEmpty(name) || object.isNull(name)) 
       return null; 
      return object.getJSONArray(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getList error", ex); 
      return null; 
     } 
    } 

    public JSONObject getObject(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull(name)) return null; 
      return object.getJSONObject(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 

    public String getString(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull(name)) return null; 
      return object.getString(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 

    public Integer getInt(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull("id")) return null; 
      return object.getInt("id"); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 

    public Double getDouble(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull(name)) return null; 
      return object.getDouble(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 

    public Long getLong(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull(name)) return null; 
      return object.getLong(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 

    public Boolean getBoolean(JSONObject object, String name) 
    { 
     try 
     { 
      if (object == null || object.isNull(name)) return null; 
      return object.getBoolean(name); 
     } 
     catch (Exception ex) 
     { 
      WLogger.error("JSONParser", "getObject error", ex); 
      return null; 
     } 
    } 
} 
+0

как вы получили 'list' в' parser.getList (root, "list"); 'если он не существует в json-ответе. – Tauqir

+0

см. Мой ответ, я надеюсь, что эта помощь –

0

C создать соответствующий класс и использовать библиотеку Gson для разбора строки json и создания объектов. так аккуратный и чистый и спутанность бесплатно

Gson gson = new Gson(); 
MyClass object = gson.fromJson(jsonString,MyClass.class); 
Смежные вопросы