Игнорировать null при десериализации JSON

183
07 мая 2019, 02:10

Делаю мапинг JSON в иерархию объектов. Есть поле типа класса, которое в JSON может быть null. Jackson в спринге валится при попытке маппировать это нулевое поле в объект. Как сделать, чтобы если вложенный джейсон равен null, то и ссылка на соответствующий объект была null? @JsonIgnore работает только при сериализации, а я десериализую JSON.

Answer 1

Если вы используете Spring boot, тогда это можно настроить в application.properties.

spring.jackson.deserialization.fail-on-unknown-properties=false

Если у вас не spring boot приложение, тогда надо сделать бин со следующими настройками:

@Bean
ObjectMapper objectMapper() {
            return Jackson2ObjectMapperBuilder.json()
            .failOnUnknownProperties(false)
            .build();
}
Answer 2

Добавь свой десериалайзер

public final class JsonWithNullDeserializer
    extends JsonNodeDeserializer
{
    @Override
    public JsonNode getNullValue(DeserializationContext ctxt)
    {
        return null;
    }
}

И задай этот десериалайзер везде где нужно

@JsonDeserialize(using = JsonWithNullDeserializer.class)
READ ALSO
Задача о днях недели [закрыт]

Задача о днях недели [закрыт]

Нужно написать программу (на java), чтобы пользователь ввёл день недели (воскресенье 0, понедельник 1,

216
Непонятная логика в аккордеоне

Непонятная логика в аккордеоне

В моём понимании при нажатии первой полосы должно быть:

136
Перемещение по заданным секторам

Перемещение по заданным секторам

Постараюсь максимально доступно описать задачуУ меня есть круг, который разделен на сектора (например 6)

146