今天在使用net.sf.json.JSONObject的时候抛出了net.sf.json.JSONException: null
object异常,很奇怪,明明做了非空判断,却依然抛出了异常。
@Test
public void test(){
//这里获取一个不存在的JSONObject
JSONObject jsonObject = JSONObject.fromObject("{}").getJSONObject("demo");
System.out.println(jsonObject);
System.out.println(jsonObject == null);
System.out.println(jsonObject.isNullObject());
jsonObject.get("123");
}
运行结果:
可以看得出来虽然打印出来jsonObject的值为null,但是用jsonObject==null判断却是false,jsonObject.isNullObject()的结果是true,直接用null判断就会被坑,所以以后在判断JSONObject的时候还需要用isNullObject()才行。
/**
* 优化后代码
*/
@Test
public void test(){
//这里获取一个不存在的JSONObject
JSONObject jsonObject = JSONObject.fromObject("{}").getJSONObject("demo");
System.out.println(jsonObject);
System.out.println(jsonObject == null);
System.out.println(jsonObject.isNullObject());
if(jsonObject != null && !jsonObject.isNullObject()){
jsonObject.get("123");
}
}