Java 如何使用ReaderForUpdate().readValue方法强制Jackson对象映射器忽略未满字段

Java 如何使用ReaderForUpdate().readValue方法强制Jackson对象映射器忽略未满字段,java,jackson,mapper,Java,Jackson,Mapper,我有一个类(省略了Jackson注释/getter/setter/etc): 我有一个例子,例如: 样本样本=新样本(“一个”,空) 我有一个json字符串: {“name”=“two”,“value”=3} 我用json更新对象: ObjectMapper mapper = new ObjectMapper(); mapper.readerForUpdating(sample).readValue(json); 更新我的对象后,如下所示: [Sample: name = "two", val

我有一个类(省略了Jackson注释/getter/setter/etc):

我有一个例子,例如:

样本样本=新样本(“一个”,空)

我有一个json字符串:

{“name”=“two”,“value”=3}

我用json更新对象:

ObjectMapper mapper = new ObjectMapper();
mapper.readerForUpdating(sample).readValue(json);
更新我的对象后,如下所示:

[Sample: name = "two", value = 3]
但是我不需要覆盖not null字段,因为
名称是,所以更新后的对象如下所示:

 [Sample: name = "one", value = 3]

不幸的是,我无法编辑我的类和Jackson注释,所以我需要以某种方式更改映射器的配置。这是一种方法吗?

ReaderForUpdate
方法背后的思想不是创建对象的新实例,而是将传递的对象的值替换到对象中进行更新

我也遇到了同样的问题,只想替换不为null的值,但要做到这一点,我需要隔离ObjectMapper并将其配置为不传输null值,这与
ReaderForUpdate
方法相结合,实现了我们想要的:

public static void updateModels(Object original,Object data) {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);

    try {
        objectMapper.readerForUpdating(original).readValue(objectMapper.writeValueAsBytes(data));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public static void updateModels(Object original,Object data) {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);

    try {
        objectMapper.readerForUpdating(original).readValue(objectMapper.writeValueAsBytes(data));
    } catch (IOException e) {
        e.printStackTrace();
    }
}