如何解决如何使readerForUpdating.readValue不覆盖非null值?
我有以下两节课:
public class Simple {
String a;
String b;
SubSimple subSimple;
}
public class SubSimple {
String a;
String b;
}
我可以对以下objectMapper进行哪些更改,以使非null值不更新为null:
Simple simple = new Simple();
simple.setA("0a");
simple.setSubSimple(new SubSimple());
simple.getSubSimple().setA("00a");
String json = "{\"b\" : \"b\",\"subSimple\" : {\"b\" : \"b\"}}";
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
simple = objectMapper.readerForUpdating(simple).readValue(json);
System.out.println("simple : " + simple);
当前输出:
简单:简单{a ='0a',b ='b',subSimple = SubSimple {a ='null',b ='b'}}
必填:
简单:简单{a ='0a',b ='b',subSimple = SubSimple {a ='00a',b ='b'}}
解决方法
尝试使用com.fasterxml.jackson.annotation.JsonMerge
批注:
class Simple {
String a;
String b;
@JsonMerge
SubSimple subSimple;
}
或在com.fasterxml.jackson.databind.ObjectMapper
实例上启用它:
objectMapper.setDefaultMergeable(Boolean.TRUE);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。