我偶然发现效果,JSON-lib
(2.4)的默认配置不允许使用键class
,metaClass
和declaringClass
的值(请参阅JsonConfig.DEFAULT_EXCLUDES
)。当相应对象添加到JSON
时,此类键值对会从JSONArray
表示中删除(请参阅下面的代码段)。
// import net.sf.json.*;
JSONObject anElement = new JSONObject();
anElement.put("term", "a value");
anElement.put("class", "a value");
JSONArray theArray = new JSONArray();
theArray.add(anElement); // Default behavior.
boolean termWasAdded = (((JSONObject)theArray.get(0)).get("term")).equals("a value");
// evaluates to true
boolean classWasAdded = ((JSONObject)theArray.get(0)).get("class") != null;
// evaluates to false
我的问题:任何人都可以解释,为什么class
,metaClass
和declaringClass
不能用作此处的密钥? - 这些项目是否在JSON
中以某种方式保留了符号?
答案 0 :(得分:1)
根据源代码:
在搜索到JSON时排除bean属性和/或映射键(默认= ['class','metaClass','declaringClass'])
这些是在将对象转换为JSON时不希望序列化的bean属性。此外,还有一些方法可用于在生成的JSON中包含这些属性。