JSONObject与null

Posted 小鸣的网络日志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSONObject与null相关的知识,希望对你有一定的参考价值。

前言

今天在写代码的时候发现在 JSON 中 由于put了key对应的value为null,结果这个JSON键值对没有输出

org.json.JSONObject

在orgJSON 中,如果直接put value会有报错提示:

org.json.JSONObject orgJSON = new org.json.JSONObject();
// IDE提示The method put(String, Collection) is ambiguous for the type JSONObject
orgJSON.put("null", null);

但是,org.json.JSONObject 提供了一个JOSNObject.NULL

orgJSON.put("JSONObject.NULL", org.json.JSONObject.NULL);
System.out.println("JSONObject.NULL : "+orgJSON);

// 控制台输出
JSONObject.NULL : {"JSONObject.NULL":null}
System.out.println(JSONObject.NULL == null);
// 控制台
false

通过查阅org.json.JSONObject的文档,发现文档是这样说的

The values can be any of these types: Boolean, JSONArray, JSONObject, Number, String, or the JSONObject.NULL object.

参考文档:https://stleary.github.io/JSON-java/org/json/JSONObject.html

net.sf.json.JSONObjcet

net.sf.json.JSONObject netJSON = new net.sf.json.JSONObject();
netJSON.put("null", null);
System.out.println("netJSON" + netJSON); 
// 控制台输出 : 
netJSON{}

文档中这样写的:

The values can be any of these types: Boolean, JSONArray, JSONObject, Number, String, or the JSONNull object.

但是吧

// IDE提示:net.sf.json.JSONNull cannot be resolved to a variable
netJSON.put("JSONNull", net.sf.json.JSONNull);

参考文档:http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html

以上是关于JSONObject与null的主要内容,如果未能解决你的问题,请参考以下文章

java 中判断JSONObject为空

JSONObject optString或者getString方法取null问题

net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject

FastJson的常用操作

FastJson的常用操作

org.json.JSONObject$1 类型的值 null 无法转换为 JSONObject