Java 如何使ReaderForUpdate.readValue()不重写非空值?
我有以下两门课:Java 如何使ReaderForUpdate.readValue()不重写非空值?,java,json,jackson,Java,Json,Jackson,我有以下两门课: 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(&qu
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
annotation:
class Simple {
String a;
String b;
@JsonMerge
SubSimple subSimple;
}
或者在com.fasterxml.jackson.databind.ObjectMapper
实例上启用它:
objectMapper.setDefaultMergeable(Boolean.TRUE);