#java #json #jackson
#java #json #джексон
Вопрос:
У меня есть следующие два класса :
public class Simple {
String a;
String b;
SubSimple subSimple;
}
public class SubSimple {
String a;
String b;
}
Какие изменения я могу внести в следующий ObjectMapper, чтобы ненулевые значения не обновлялись до 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);
Текущий вывод :
просто: Simple{a=’0a’, b=’b’, subSimple=SubSimple{a=’null’, b=’b’}}
Требуется :
просто: Simple{a=’0a’, b=’b’, subSimple=SubSimple{a=’00a’, b=’b’}}
Ответ №1:
Попробуйте использовать com.fasterxml.jackson.annotation.JsonMerge
аннотацию:
class Simple {
String a;
String b;
@JsonMerge
SubSimple subSimple;
}
или включить его в com.fasterxml.jackson.databind.ObjectMapper
экземпляре:
objectMapper.setDefaultMergeable(Boolean.TRUE);