将毫秒时间戳反序列化为 java.time.Instant
2022-09-01 11:44:53
我试图使用Jackson读取JSON文件,并将其中一个字段存储为一个纪元毫秒作为Java,但是反序列化的行为不符合预期。Instant
以下是我在尝试读取时间戳时看到的内容:
1503115200000
杰克逊将字段设置为 .Instant
+49601-10-28T16:00:00Z
这似乎是因为 Jackson 的默认设置是使用 而不是 读取时间戳。Instant.ofEpochSecond(Long l)
Instant.ofEpochMilli(Long l)
有没有办法将杰克逊设置为使用该方法?这就是我目前为我的:ObjectMapper
ofEpochMilli
ObjectMapper
ObjectMapper om = new ObjectMapper()
.registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false)
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.setSerializationInclusion(Include.NON_NULL);
注意
如果我将输入JSON更改为ISO日期(例如或)划秒(例如该字段)能够正确设置。2017-08-19T04:00:00Z
1503115200
Instant
不幸的是,JSON输入必须是纪元毫秒,例如.1503115200000