Я пытаюсь заставить Джексона проанализировать значения даты и времени, данные мне определенным API, которые я не могу изменить.
Поэтому я даю ему собственный шаблон:
public class Problem {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
String json = "{\"posted_at\":\"Mon, 14 Oct 2019 13:00:00 +0900\"}";
Model model = mapper.readValue(json, Model.class);
System.out.println(model.posted_at);
}
public static class Model {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "E, d MMM yyyy HH:mm:ss XX")
public ZonedDateTime posted_at;
}
}
Я получаю это исключение:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Mon, 14 Oct 2019 13:00:00 +0900' could not be parsed at index 0
Кажется, что это происходит с ошибкой в индексе 0, но я не понимаю, почему, потому что для шаблона дня недели "E",похоже, что "Mon" должно быть правильным значением.
До сих пор пробовал:
Установка DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE
:
mapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, false)
Результат:то же исключение.
Добавление Jdk8Module
:
ObjectMapper mapper = new ObjectMapper()
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
Результат: то же исключение.