如何告诉杰克逊在非缺失字段上反序列化更新值包括嵌套字段

时间:2015-02-05 16:08:17

标签: java json jackson

我有一些带有一些值的Foo类,并使用相同的Foo对象进行反序列化。

public class Foo {
        public String name;
        public Integer age;
        public Goo g;
}
static public class Goo {

        public Long id;
        public Integer level;
}

assume // String jsonStr = {"name" : "alan"; "g": {"level":6}}
Foo f = new Foo();
f.name = "dummy";
f.age = 99;
//asssume f.g.id = 3
objectMapper.readerForUpdating(f).readValue(jsonStr);
// f object toString
output {"name" : "alan"; "age" : 99, "g":{"id": null, "level":6}}

如何进行配置以使其不会更新字段上具有缺失字段值的任何或默认值?

如下面输出

output {"name" : "alan"; "age" : 99, "g":{"id": 3, "level":6}}

1 个答案:

答案 0 :(得分:0)

您可以手动配置映射器或注释Foo类。

手动:

objectMapper.setSerializationInclusion(Include.NON_NULL);

或者在类上(甚至在属性上)添加注释:

@JsonInclude(Include.NON_NULL)
public class Foo {
        public String name;
        public Integer age;
}

编辑:如果你想忽略空值,这就回答了这个问题,但正如对问题的评论所说,你的代码中可能有错误。您在阅读之前重新分配变量,显然是