Джексон Десериализация всех пустых строк в нуль в классе - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть несколько POJO, для некоторых из них я хотел бы десериализовать все пустые строки до null.

Есть ли способ (аннотации, может быть?), Чтобы я сказал Джексону, какие POJO должны десериализовать всепустые строки в null, а что не должно?

Не дубликат, я ищу решение, которое работает с классом, а не с отдельными полями

1 Ответ

0 голосов
/ 26 сентября 2019

Определите сериализатор следующим образом:

public class EmptyStringAsNullDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser jsonParser, 
                              DeserializationContext deserializationContext) 
                              throws IOException {

        String value = jsonParser.getText();
        if (value == null || value.isEmpty()) {
            return null;
        } else {
            return value;
        }
    }
}

Добавьте его к Module и затем зарегистрируйте Module к вашему ObjectMapper:

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

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...