ObjectMapper выдает JsonMappingException при попытке создать экземпляр с нулевым полем

Я пытаюсь сериализовать объект в json String, что бы иметь пустые поля. Когда все поля инициализируются - все работает хорошо, но когда я установил значение поля null, я получил исключение:

com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException).

Мой код:

public String toJsonString(T t) throws JsonProcessingException{
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    String dtoAsString = objectMapper.writeValueAsString(t); //string where I got the exception
    return dtoAsString;
}

Объект:

SomeObject{
    @JsonSerialize(using = LocalDateSerializer.class)
    LocalDate date = LocalDate.now();
    Long value = null;
}

PS:

Проблема в том, что я не могу автоматически разобрать someObject в json, так как у меня есть другое исключение - мне нужно разобрать date в специальный строковый формат. Поэтому мне нужно использовать именно мой способ - objectMapper (Gson().toString неправильно сериализовал мое значение LocalDate).


person Valentyn Hruzytskyi    schedule 31.10.2019    source источник


Ответы (1)


Я нашел решение:

Произошла ошибка, так как одно из полей не было инициализировано, поэтому ObjectMapper выдало исключение.

Просто добавьте @JsonInclude(JsonInclude.Include.NON_NULL) к вашему классу POJO:

@JsonInclude(JsonInclude.Include.NON_NULL)

SomeObject{
    String date = "11.01.19";
    Long value = null;
}

в результате мы получим json без поля, допускающего значение null:

{
    "date" : "11.09.19"
}
person Valentyn Hruzytskyi    schedule 02.11.2019