我偶然发现了这种效果,即JSON-lib(2.4)的默认配置不允许使用键classmetaClassdeclaringClass的值(请参阅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

我的问题:谁能解释,为什么classmetaClassdeclaringClass在这里不能用作键? -这些项目是否在JSON中保留了符号?

最佳答案

根据源代码:

序列化为JSON时排除bean属性和/或映射键(默认值= ['class','metaClass','declaringClass'])

这些是在将对象转换为JSON时不想序列化的bean属性。此外,还有一些方法可用于将这些属性包含在结果JSON中。

10-06 13:51