当前位置:   article > 正文

net.sf.json.JSONObject判断json是否为空_判断jsonobject为空

判断jsonobject为空
日常开发中,常常会对一些JSONObject进行判空处理,在这里做下记录先说结论,如果只是想判断是否是null,那么就使用JSONObject.isNullObject()方法,而如果还想判断里面的内容是否为空,那么就要使用isEmpty()方法了。

分析:
   首先,用jsonObject == null的方式来判断是不行的,我们通过JSONObject对象get出来的值不是普通的null,而是一个JSONNull,见如下代码
  1. Map<String, String> map = new HashMap<String, String>();
  2. map.put("A", null);
  3. JSONObject jsonObject = JSONObject.fromObject(map);
  4. System.out.println(null == jsonObject.get("A"));//输出false
  5. System.out.println(jsonObject.get("A") instanceof JSONNull);//输出true
那么我们可以使用工具提供的api来判空,比如:
  1. jsonObject.isEmpty();//这个是JSONObject实现的父接口Map中的方法
  2. jsonObject.isNullObject();//这个是JSONObject自己的方法
  1. 其实这两个方法也是有区别的:
  2. 因为isEmpty()是java.util.Map中的方法,简单说它其实做的类似(!jsonObject instanceof JSONNull && jsonObject.size() > 0)的逻辑判断。
  3. 而jsonObject.isNullObject()因为是JSONObject自己实现的方法,它只是做了类似(!jsonObject instanceof JSONNull)的逻辑判断,因此当JSONObject对象实例化之后,但是里面并没有数据时使用这个方法是不能对其进行完整的判空的,要特别注意。

示例:

  1. Map<String, String> mapA = new HashMap<String, String>();
  2. mapA.put("A", null);
  3. JSONObject jsonObjectA = JSONObject.fromObject(mapA);
  4. System.out.println("jsonObjectA = " + jsonObjectA);
  5. System.out.println("jsonObjectA.getJSONObject(\"A\") : " + jsonObjectA.getJSONObject("A"));
  6. System.out.println("isNullObject() : " + jsonObjectA.getJSONObject("A").isNullObject());//true
  7. System.out.println("isEmpty() : " + jsonObjectA.getJSONObject("A").isEmpty());//true
  8. System.out.println("----------------------------------");
  9. Map<String, Object> mapB = new HashMap<String, Object>();
  10. mapB.put("B", new HashMap<String, Object>());
  11. JSONObject jsonObjectB = JSONObject.fromObject(mapB);
  12. System.out.println("jsonObjectB = " + jsonObjectB);
  13. System.out.println("jsonObjectB.getJSONObject(\"B\") : " + jsonObjectB.getJSONObject("B"));
  14. System.out.println("isNullObject() : " + jsonObjectB.getJSONObject("B").isNullObject());//false
  15. System.out.println("isEmpty() : " + jsonObjectB.getJSONObject("B").isEmpty());//true

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/611973
推荐阅读
相关标签
  

闽ICP备14008679号