ошибка при попытке сериализовать null instant с помощью jackson

#java #json #spring-boot #serialization #jackson

#java #json #весенняя загрузка #сериализация #джексон

Вопрос:

У меня возникли некоторые проблемы с Джексоном, пытающимся сериализовать null instant objects. В моей модели db у меня есть несколько временных меток, которые являются нулевыми, и я хочу иметь возможность отправлять их таким образом клиенту.

Дело в том, что когда я генерирую ответ, я всегда вижу эти ошибки:

Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain:...

При отладке y показать, что поле является мгновенным. Это проблемный способ получения…

     @JsonInclude(JsonInclude.Include.NON_EMPTY)
    public Instant getStartTime() {
        return startTime.toInstant();
    }
  

Я пытался использовать аннотацию @JsonInclude для поля, средства получения и всего класса, но я все еще получаю это сообщение и 500 на клиенте.

Я использую Spring-boot, который включает jackson 2.11.0.

Большое спасибо

Ответ №1:

Вам нужно проверить, что переменная startTime не null первая:

 @JsonInclude(JsonInclude.Include.NON_EMPTY)
public Instant getStartTime() {
    return startTime != null ? startTime.toInstant() : null;
}
  

Jackson вызывает getter и проверяет, является ли значение null или нет. Но NullPointerException выдается при getter вызове.

Комментарии:

1. Мне нужно больше спать: facepalm: Большое спасибо!

2. @Acampoh, никаких проблем. Иногда мы не видим леса за деревьями. Комментарии к SO поддерживает символы unicode: 🤦. 🤝