我偶然发现了这种效果,即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
中保留了符号? 最佳答案
根据源代码:
序列化为JSON时排除bean属性和/或映射键(默认值= ['class','metaClass','declaringClass'])
这些是在将对象转换为JSON时不想序列化的bean属性。此外,还有一些方法可用于将这些属性包含在结果JSON中。