Код: Выделить всё
class EmptyListDeserializerTest {
final ObjectMapper objectMapper = new ObjectMapper();
{
objectMapper.configOverride(List.class)
.setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY, Nulls.AS_EMPTY));
}
@Test
void test2() throws JsonProcessingException {
final var result = objectMapper.readValue("null", new TypeReference() {});
assertThat(result).isEmpty();
}
@Test
void test3() throws JsonProcessingException {
final var json = """
[{
"name": "John Doe",
"address": null
}]
""";
final var result = objectMapper.readValue(json, new TypeReference() {});
assertThat(result.get(0).address).isEmpty();
}
@Test
void test4() throws JsonProcessingException {
final var json = """
[{
"name": "John Doe"
}]
""";
final var result = objectMapper.readValue(json, new TypeReference() {});
assertThat(result.get(0).address).isEmpty();
}
public static class MyClass {
public MyClass() {
}
private String name;
public MyClass(final String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
public static class MyComplexClass {
public MyComplexClass() {
}
private String name;
private List address;
public MyComplexClass(final String name, final List address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public List getAddress() {
return address;
}
public void setAddress(final List address) {
this.address = address;
}
}
Я хочу сопоставить все виды несуществующих списков с пустыми списками.
Адаптация самих сущностей не является задачей решение.
Только ObjectMapper можно адаптировать.
Я испробовал все возможные решения, но мне удалось пройти только test3, все остальные не сработали.Я также попробовал CustomerDeserializer, но он так и не был вызван, хотя и был зарегистрирован:
Код: Выделить всё
public List deserialize(JsonParser p, DeserializationContext ctxt)
Подробнее здесь: https://stackoverflow.com/questions/791 ... mpty-lists