#java #resttemplate
Вопрос:
Я использую интерфейс ResponseErrorHandler для обработки ошибок сервера и клиента
Я получаю этот ответ от внешнего API { «метка времени»: «2021-08-02T12:04:45.332 0000», «статус»: 400, «ошибка»: «Неверный запрос», «сообщение»: «Исключение с нулевым значением», }
Теперь у меня есть класс, в котором я десериализуюсь
public class ApplicationPayload {
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime timestamp;
private HttpStatus status;
private String error;
private String message;
//getter and setter
}
@Override
public void handleError(ClientHttpResponse response) throws IOException {}
Я получаю эту ошибку в методе HandleError
Не удалось десериализовать java.time.LocalDateTime: (java.время.формат.Исключение DateTimeParseException) Текст ‘2021-08-02T12:04:45.332 0000’ не удалось разобрать, непроверенный текст найден по индексу 23
Комментарии:
1. Вы используете a
LocalDateTimeDeserializer
для анализа aString
, который включает смещение от UTC (последние 5 символов:0000
). ALocalDateTime
не может хранить подобную информацию, вам придется использоватьOffsetDateTime
здесь и соответствующий десериализатор (я не знаю , есть ли такойOffsetDateTimeDeserializer
, но если есть, используйте его).2. Разве это не у
OffsetDateTime
тебя там, нетLocalDateTime
?3. Спасибо, я понял ваши замечания, есть ли способ решить эту проблему? @деХаар
4. Возможно, вам придется настроить тот, который у вас есть, если нет готового
OffsetDateTime
десериализатора. Я надеюсь, что это тот API, который вы используете, и в этом случае здесь есть пример