2010-03-16 72 views
7

我正在使用JSON反序列化包含某个hashmap属性的null值的输入字符串。有没有人有任何线索为什么会发生这种异常?是否有可能null不被接受为一个值这是可配置的?Java - JSON空异常

输入样本:

{"prop1":"val1", "prop2":123, "prop3":null} 

堆栈跟踪:

net.sf.json.JSONException: null object 
    at net.sf.json.JSONObject.verifyIsNull(JSONObject.java:2856) 
    at net.sf.json.JSONObject.isEmpty(JSONObject.java:2212) 

感谢。

回答

6

对我来说,这一点也适用JSON-LIB-2.3-jdk15:

String json = "{\"prop1\":\"val1\", \"prop2\":123, \"prop3\":null}"; 
JSONObject jsonObject = JSONObject.fromObject(json); 
HashMap<String, Object> map = (HashMap<String, Object>) JSONObject.toBean(jsonObject, HashMap.class); 

其实null值成为JSONNull一个实例。

JSONNull等同于JavaScript调用null价值,而Java的null等同于JavaScript调用undefined值。

+0

感谢您的回答。 – thelost 2010-03-17 07:47:33