У меня есть класс, скажем, ниже пример модели < /p>
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
class A {
private String a;
private String b;
private String c;
@JsonMerge
private D d;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
class D {
private String e;
private String f;
private String g;
private String h;
}
< /code>
Два json дается с полной моделью и частичной моделью, описывающей тот же класс, что и выше < /p>
public static final String a = """
{ "a":"a in a value",
"b":"b in a value",
"c":"c in a value",
"d":{
"e":"e in a value",
"f":"f in a value",
"g":"g in a value",
"h":"h in a value"
}
}
""";
public static final String b = """
{ "a":"a in b value",
"b":"b in b value",
"d":{
"e":"e in b value",
"f":"f in b value"
}
}
""";
< /code>
Когда я пытаюсь объединить эти два JSON, используя Jackson версию 2.17.3 Я получаю ниже вывод < /p>
Входной объект:A(a=a in a value, b=b in a value, c=c in a value, d=D(e=e in a value, f=f in a value, g=g in a value, h=h in a value))
Частичный объект: a (a = a in b value, b = b in b value, c = null, d = d (e = e in b Значение, f = f в значении b, g = null, h = nul d = d (e = e в значении b, f = f в значении b, g = g в значении, h = h в значении))
Но требование состоит в том, чтобы игнорировать значение h в слиянии
Значение, g = g в значении, h = null))
Здесь, в вышеуказанном выходе желания h от частичной полезной нагрузки.
Основной метод
public static void main(String[] args) throws JsonProcessingException {
var completeObject = JsonParser.parseJsonString(a,A.class);
var partialObject = JsonParser.parseJsonString(b,A.class);
System.out.println(completeObject);
System.out.println(partialObject);
ObjectMapper objectMapper = new ObjectMapper();
ObjectReader objectReader = objectMapper.readerForUpdating(completeObject);
A update = objectReader.readValue(b);
System.out.println(update);
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -operation