Я знаю, что есть много повторяющихся вопросов об одной и той же проблеме, однако я не смог десериализовать данный формат даты в объект java.util.Date
. Клиентский API, который я использую, возвращает поля даты с 6 цифрами в сочетании с миллисекундами и наносекундами.
- 2016-12-08T20: 09: 05.508883Z
- 2016-12-08T20: 09: 05.527Z
Иногда это включает нано секунды, иногда нет. Я пытался следовать примерам десериализации из самой библиотеки jackson-databind , однако не смог найти обходной путь. Скажи, что это пример json blob
{
"id": "68e6a28f-ae28-4788-8d4f-5ab4e5e5ae08",
"created_at": "2016-12-08T20:09:05.508883Z",
"done_at": "2016-12-08T20:09:05.527Z"
}
Entity.java
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrderResponse {
private String id;
@JsonProperty("created_at")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'*'", timezone = "UTC")
private Date createdAt;
@JsonProperty("done_at")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'*'", timezone = "UTC")
private Date doneAt;
}
Если я использую только формат yyyy-MM-dd'T'HH:mm:ss
, Джексон Маппер десериализует с часовым поясом, исходящим от самого jvm. Но мне нужно использовать формат UTC, и я попытался также реализовать собственный десериализатор и сериализатор, который также не работает. У меня вопрос java.util.Date
правильный тип объекта? Кроме того, я также попытался создать свой собственный объектный преобразователь с регистрацией new JavaTimeModule()
, но это не сработало.
Спасибо за помощь.