簡體   English   中英

Jackson 可以解析不是 ISO-8601 的日期時間值嗎?

[英]Can Jackson parse date-time values which aren't ISO-8601?

我試圖讓 Jackson 解析由我無法更改的特定 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());

    結果:同樣的例外。

Jackson has worked for a long time with Joda DateTime and from your error message it seems you are using Java.DateTime to add support for Java dateTime you need to add some extra dependencies "jackson-datatype-jdk8" see https://github. com/FasterXML/jackson-modules-java8

<dependency>
 <groupId>com.fasterxml.jackson.datatype</groupId>
 <artifactId>jackson-datatype-jdk8</artifactId> 
</dependency>

然后你設置ADJUST_DATES_TO_CONTEXT_TIME_ZONE

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, false)

然后添加新模塊

// Up to Jackson 2.9: (but not with 3.0)
ObjectMapper mapper = new ObjectMapper()
   .registerModule(new Jdk8Module())
   .registerModule(new JavaTimeModule()); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM