3

我偶然发现了效果,即JSON-lib(2.4) 的默认配置不允许将值与 keys和class(参见) 一起使用。当将相应的对象添加到 a 时,此类键值对将从表示中剥离(请参阅下面的代码片段)。metaClassdeclaringClassJsonConfig.DEFAULT_EXCLUDESJSONJSONArray

// 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不能在这里用作键吗?- 这些项目是否以某种方式保留符号?metaClassdeclaringClassJSON

4

1 回答 1

1

根据源代码:

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

这些是您在将对象转换为 JSON 时不想序列化的 bean 属性。此外,您可以使用一些方法将这些属性包含在生成的 JSON 中。

于 2015-10-04T07:37:00.007 回答