我試圖解析JSON「null」屬性時遇到了一個麻煩,請幫我理解真正的問題。我有一個以下的JSON:無法解析JSON屬性「null」
{
"properties" : {
"null" : {
"value" : false
}
}
}
我用http://jsonlint.com來驗證這個JSON是有效的。我試圖從Java解析它:
import net.sf.json.JSONObject;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
String st = "{" +
" 'properties' : {" +
" 'null' : {" +
" 'value' : false" +
" }" +
" }" +
"}";
JSONObject.fromObject(st);
}
}
但有例外:
Exception in thread "main" java.lang.ClassCastException: JSON keys must be strings.
at net.sf.json.JSONObject._fromJSONObject(JSONObject.java:927)
at net.sf.json.JSONObject.fromObject(JSONObject.java:155)
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:108)
at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:238)
at net.sf.json.JSONObject._processValue(JSONObject.java:2655)
at net.sf.json.JSONObject.processValue(JSONObject.java:2721)
at net.sf.json.JSONObject.element(JSONObject.java:1786)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1036)
at net.sf.json.JSONObject._fromString(JSONObject.java:1201)
at net.sf.json.JSONObject.fromObject(JSONObject.java:165)
at net.sf.json.JSONObject.fromObject(JSONObject.java:134)
我用JSON-LIB-2.4-jdk15.jar從http://json-lib.sourceforge.net解析它。有誰可以澄清這一點?爲什麼這個庫會拋出異常,但在線驗證器說它是有效的JSON?這是庫中的一個錯誤,或者我犯了錯誤?
這不是問題的原因,但'null'是在JavaScript中的關鍵字。你真的需要使用它作爲你的財產的名稱? – aroth
@aroth 1)JSON不是JavaScript--它是JavaScript文字的形式化子集,其中對象關鍵字需要用雙引號括起來2)'「null」不是'null' – 2011-07-14 00:41:38
@pst - JSON不是JavaScript,但通常你最終會在JavaScript中使用它(不是說這不能在JavaScript中工作,但它肯定會造成一些[令人困惑的代碼](http://jsfiddle.net/SZSm6/))。而'null'也是Java中的一個關鍵字。那個''null''不是'null'是不重要的。在我看來,它在語義上仍然含糊地稱爲「null」屬性。 – aroth