JSON слияние нулевой стоимости из частичной полезной нагрузки рассматривается во время операции патчаJAVA

Программисты JAVA общаются здесь
Anonymous
JSON слияние нулевой стоимости из частичной полезной нагрузки рассматривается во время операции патча

Сообщение Anonymous »

У меня есть класс, скажем, ниже пример модели < /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

Вернуться в «JAVA»