Как десериализовать пустую строку как нулевое значение в Java? - PullRequest
0 голосов
/ 05 июня 2019

Я столкнулся с проблемой, когда я пытаюсь десериализовать пустую строку как нулевое значение с моим кодом ниже. Есть ли способ десериализации его правильно. Я создал класс EmptyStringDeserializer, но застрял, создавая собственный десериализатор. Ниже вы можете найти мой EmptyStringDeserializer, чтобы увидеть, что я сделал не так.

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Вы можете включить ACCEPT_EMPTY_STRING_AS_NULL_OBJECT в своем ObjectMapper:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

В качестве альтернативы, вы можете определить пользовательский десериализатор:

public class CustomStringDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) 
            throws IOException {

        String value = StringDeserializer.instance.deserialize(p, ctxt);
        if (value == null || value.trim().isEmpty()) {
            return null;
        }

        return value;
    }
}

И зарегистрируйте его в своем модуле ObjectMapper:

SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, new CustomStringDeserializer());

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);

Этот десериализатор будет использоваться для десериализации всех строк.

0 голосов
/ 05 июня 2019

Ваш @JsonDeserialize должен быть на уровне поля, а не на уровне класса. Добавьте в каждое поле String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...