解析可能包含json数组或布尔值的JSON

时间:2015-01-22 08:14:27

标签: android json

我的json字符串看起来像这样

  

{“company_id”:[1,“test”]}

但它可能是

{“company_id”:false}

的某个时候。如果它是一个jsonArray,我可以很容易地解析它,但是当它返回布尔值时会出现异常。怎么解析呢?

Logcat:

  

01-22 06:52:09.512:W / System.err(6532):org.json.JSONException:Value   在java.lang.Boolean类型的company_id处的false无法转换为   JSONArray 01-22 06:52:09.516:W / System.err(6532):at   org.json.JSON.typeMismatch(JSON.java:100)01-22 06:52:09.516:   W / System.err(6532):at   org.json.JSONObject.getJSONArray(JSONObject.java:553)

2 个答案:

答案 0 :(得分:1)

使用try块检查是否成功:

try {
    JSONObject jsonObject = new JSONObject(json);
    try {
        boolean bool = jsonObject.getBoolean("company_id");
        Log.e("TAG", "It's a boolean: " + bool);
    } catch (JSONException e) {
        JSONArray array = jsonObject.getJSONArray("company_id");
        Log.e("TAG", "It's an array: " + array);
    }
} catch (JSONException e) {
    e.printStackTrace();
}

答案 1 :(得分:1)

您可以使用try/catch尝试获取JSONArray,如果抛出异常,请尝试获取Bool