对于将具有未知字段的 json 反序列化为对象,可以使用 @JsonAnySetter。
但是,如果我将这样的 json 读入我的对象,修改一些已知字段并将其写回 json 怎么办?未知属性将丢失。
我该如何处理这种情况?是否可以映射对象或者我必须将数据读入 JsonNode 或 Map?
解组为自定义 java 类有其优点和缺点。它为您提供了不错的静态类型,但它很好,是静态的。的 javadoc@JsonAnySetter
表明它类似于 JAXB 的@XmlAnyElement
,但与 不同@XmlAnyElement
的是,数据对象不包含命名信息,因此它是一条单行道。
如果您需要处理动态 JSON 流,那么您需要硬着头皮使用Map
or JsonNode
。
现在可以用来@JsonAnyGetter
提供一种允许动态属性序列化的方法:
@JsonAnyGetter
public Map<String, String> getDynamicProperties() {
return dynamicProperties; // a field like this exists
}
Jackson 有这个 RFE:http: //jira.codehaus.org/browse/JACKSON-292添加这样的功能。当你考虑它时,这是完全有道理的。