检查json对象是否包含json数组?

时间:2014-11-26 12:27:29

标签: android json arrays

在我的json响应中,我得到了json数组,并且在其中有80个其他json对象,并且在每个对象中都有元素,而且一些对象也有JsonArray。那么如何检查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
    }
}

2 个答案:

答案 0 :(得分:3)

只需使用try-catch案例检查:

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. 
}

答案 1 :(得分: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();
        }
    }