2014-11-26 4 views
2

В моем ответе json я получаю json-массив и внутри него есть еще 80 других json-объектов, и в каждом объекте есть элементы, а некоторые объекты также имеют JsonArray. Итак, как я могу проверить, присутствует ли массив json или нет?проверить, содержит ли json объект json массив или нет?

Я также попытался optjsonarray, но это не сработало для меня.

Вот мой код:

public static void insertMyDiaryValues(final JSONObject jobject) 
     throws Throwable { 
    String arrOfColumn[] = new String[] { "uuid", "date", "title", "diary", 
      "pictureurl", "pictureWidth", "pictureHeight", "child" }; 
    try { 

     SmartTable DiaryData = null; 
     DiaryData = SmartApplication.REF_SMART_APPLICATION.getDataHelper() 
       .getTableList().get(DBTblNames.MyDiaryValues); 
     try { 

      JSONArray jarr = new JSONArray(jobject.getJSONArray("diary")); 

      for (int i = 0; i < jarr.length(); i++) { 
       // String childValue = "" 
       // + jarr.getJSONObject(i).getJSONArray("child").length(); 
       // System.out.println("child Value :-" 
       // + jarr.getJSONObject(i).getJSONArray("child").length()); 

       // if (!(childValue == null)) { 

       DiaryData.insertRow(
         arrOfColumn, 
         new String[] { 

           jarr.getJSONObject(i).get("uuid") 
             .toString(), 
           jarr.getJSONObject(i).get("date") 
             .toString(), 
           jarr.getJSONObject(i).get("title") 
             .toString(), 
           jarr.getJSONObject(i).get("diary") 
             .toString(), 
           jarr.getJSONObject(i).get("pictureurl") 
             .toString(), 
           jarr.getJSONObject(i).get("pictureWidth") 
             .toString(), 
           jarr.getJSONObject(i).get("pictureHeight") 
             .toString(), 
           "" 
             + jarr.getJSONObject(i) 
               .getJSONArray("child") 
               .length() 

         }); 

      } 

     } catch (Exception e) { 

     } 

    } 

    catch (Exception e) { 
     // TODO: handle exception 
    } 
} 
+0

возможный дубликат [Определить, является ли JSON JSONObject или JSONArray] (http://stackoverflow.com/questions/611870 8/define-ли-json-is-a-jsonobject-or-jsonarray) – Suvitruf

+0

nope его не дублируется – user5111

ответ

3

Просто проверить с помощью примерки поймать случай:

try{ 
    JSONArray jsonArray = jsonObject.getJSONArray("key"); 
}catch (JSONException e){ 
    e.printStackTrace(); 
    // here write your code to get value from Json object which is not getJSONArray. 
} 
+0

i m уже использует блок try catch – user5111

+1

простое решение..thanks –

1

Код ниже работал для меня: -

public static void insertMyDiaryValues(final JSONObject jobject) { 
     String arrOfColumn[] = new String[] { "uuid", "date", "title", "diary", 
       "pictureurl", "pictureWidth", "pictureHeight", "child" }; 

     try { 
      SmartTable DiaryData = null; 
      DiaryData = SmartApplication.REF_SMART_APPLICATION.getDataHelper() 
        .getTableList().get(DBTblNames.MyDiaryValues); 

      JSONArray jarr = new JSONArray(jobject.getJSONArray("diary") 
        .toString()); 

      for (int i = 0; i < jarr.length(); i++) { 

       String child; 
       if (jarr.getJSONObject(i).has("child")) { 
        child = "" 
          + jarr.getJSONObject(i).getJSONArray("child") 
            .length(); 
       } else { 
        child = "0"; 
       } 
       try { 
        DiaryData.insertRow(arrOfColumn, 
          new String[] { 

            jarr.getJSONObject(i).get("uuid") 
              .toString(), 
            jarr.getJSONObject(i).get("date") 
              .toString(), 
            jarr.getJSONObject(i).get("title") 
              .toString(), 
            jarr.getJSONObject(i).get("diary") 
              .toString(), 
            jarr.getJSONObject(i).get("pictureurl") 
              .toString(), 
            jarr.getJSONObject(i).get("pictureWidth") 
              .toString(), 
            jarr.getJSONObject(i).get("pictureHeight") 
              .toString(), child 

          }); 
       } catch (Throwable e) { 

        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 

     } catch (JSONException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (Throwable e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

     try { 

     } catch (Exception e) { 
      // TODO: handle exception 
     } catch (Throwable e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
Смежные вопросы