为了将带有未知字段的json反序列化为对象,有@JsonAnySetter。
但是如果我将这样的json读入我的对象,修改一些已知的字段并将其写回json呢? 未知属性将丢失。
我该如何处理此类案件?是否可以映射对象或是否必须将数据读入JsonNode或Map?
答案 0 :(得分:2)
解组成自定义java类有其优点和缺点。它给你很好的静态输入,但它很好,静态。 @JsonAnySetter
的javadoc表明它与JAXB的@XmlAnyElement
类似,但与@XmlAnyElement
不同,数据对象不包含命名信息,因此它是单向的。
如果您需要处理动态JSON流,那么您需要咬紧牙关并使用Map
或JsonNode
。
答案 1 :(得分:2)
杰克逊有这个RFE:http://jira.codehaus.org/browse/JACKSON-292添加这样的功能。当你想到它时,你会感觉很有意义。
答案 2 :(得分:2)
现在可以使用@JsonAnyGetter
提供一种允许对动态属性进行序列化的方法:
@JsonAnyGetter
public Map<String, String> getDynamicProperties() {
return dynamicProperties; // a field like this exists
}