使用net.sf.json.JSONObject的fromObject方法可以将对象和字符串进行双向转换,字符串需要满足json格式,否则会抛出异常,但是当传入的值是一个null的时候,这时候不会抛出异常,仍然会生成一个JSONObject对象(一开始以为这个对象是null,直接拿去和null最比较结果返回false),如果打印这个对象的话会返回null,但是这个对象本身不是null,查看源码,原来fromObject方法会在转换前做判断
如果判断传入的值是null,则执行
进入到new JSONObject(true);中会看到JSONOject对象里面有一个nullObject属性,如果传入的值是null,则该属性会被赋值为true,如果调用对象的toSTring方法,会先判断这个属性是否为true,如果是的话则返回一个JSONNull对象的toString方法,这时候输出的就是一个null