Как десериализовать время обработки данных для ШАБЛОНА REST обработчика ответов?

#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 для анализа a String , который включает смещение от UTC (последние 5 символов: 0000 ). A LocalDateTime не может хранить подобную информацию, вам придется использовать OffsetDateTime здесь и соответствующий десериализатор (я не знаю , есть ли такой OffsetDateTimeDeserializer , но если есть, используйте его).

2. Разве это не у OffsetDateTime тебя там, нет LocalDateTime ?

3. Спасибо, я понял ваши замечания, есть ли способ решить эту проблему? @деХаар

4. Возможно, вам придется настроить тот, который у вас есть, если нет готового OffsetDateTime десериализатора. Я надеюсь, что это тот API, который вы используете, и в этом случае здесь есть пример