JSONObject、JSONArray 非空判断

  • JSONObject、JSONArray 非空判断,这么写的好处是 null.isEmpty()null.size() 会报空指针异常,添加上 ||&& ,程序就会走不到这一步,所以下面的公式不会报错。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //JSONObject空判断
    if (jsonObj == null || jsonObj.isEmpty()) {
    System.out.println("jsonObj为空");
    }
    //JSONObject非空判断
    if (jsonObj != null && !jsonObj.isEmpty()) {
    System.out.println("jsonObj为非空");
    }

    //JSONArray空判断
    if (jsonArray == null || jsonArray.size() == 0) {
    System.out.println("jsonArray为空");
    }
    //JSONArray非空判断
    if (jsonArray != null && jsonArray.size() > 0) {
    System.out.println("jsonArray为空");
    }
  • 实际开发中对JSON数据操作时,JSONObject / JSONArray 如果为空,在取值 getJSONObject() / getJSONArray() 会报错,这时就需要先进行判断。
    注意:如果给在下面实例中16行代码只写成if (clutterForm.size() > 0)进行判断,运行后则会报NullPointerException

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public static void main(String[] args) {

    String json1 = "{\"code\":200,\"msg\":null,\"data\":{\"basicForm\":[{\"formType\":\"1\",\"formVersion\":\"70\"}],\"clutterForm\":\"\"}}";
    String json2 = "{\"code\":200,\"data\":{\"basicForm\":[{\"formType\":\"1\",\"formVersion\":\"66\"}],\"clutterForm\":[{\"pcJson\":{\"gutter\":0,\"column\":[{\"readonly\":true,\"prop\":\"123\"}]}}]}}";

    JSONObject jsonObject = null;
    JSONArray columnEvery = null;
    List<String> list = new ArrayList<>();
    list.add(json1);
    list.add(json2);

    for (String json : list) {
    jsonObject = JSON.parseObject(json);
    if (jsonObject.containsKey("data") && jsonObject.getJSONObject("data").containsKey("clutterForm")) {
    com.alibaba.fastjson.JSONArray clutterForm = jsonObject.getJSONArray("clutterForm");
    if (clutterForm != null && clutterForm.size() > 0) {
    com.alibaba.fastjson.JSONObject pcJson = clutterForm.getJSONObject(0).getJSONObject("pcJson");
    if (pcJson.containsKey("column")) {
    com.alibaba.fastjson.JSONArray column = pcJson.getJSONArray("column");
    if (columnEvery == null) {
    columnEvery = column;
    }
    }
    }
    }
    }
    }