使用Jackson处理未知的JSON属性

时间:2010-05-04 08:34:23

标签: json jackson

为了将带有未知字段的json反序列化为对象,有@JsonAnySetter。

但是如果我将这样的json读入我的对象,修改一些已知的字段并将其写回json呢? 未知属性将丢失。

我该如何处理此类案件?是否可以映射对象或是否必须将数据读入JsonNode或Map?

3 个答案:

答案 0 :(得分:2)

解组成自定义java类有其优点和缺点。它给你很好的静态输入,但它很好,静态。 @JsonAnySetter的javadoc表明它与JAXB的@XmlAnyElement类似,但与@XmlAnyElement不同,数据对象不包含命名信息,因此它是单向的。

如果您需要处理动态JSON流,那么您需要咬紧牙关并使用MapJsonNode

答案 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
}