jackson objectmapper序列化的字符串日期不正确

flvtvl50  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(483)

fasterxml objectmapper设置 duedate 序列化时出错。 updated 以及 created 在Map时可以。唯一不同的是,时间不包括在内,也不提供。

"fields": {
    "updated": "2020-09-01T06:18:36.000+0900",
    "duedate": "2020-08-04",
    "created": "2020-07-31T08:25:54.000+0900"
}

这是我的密码:

ObjectMapper mapper = new ObjectMapper();
Fields fields = mapper.readValue(json, Fields.class);
System.out.println(fields.getFields().getDuedate());
Result: Mon Aug 03 19:00:00 CDT 2020

因为你可以看到它的一天,不知道从哪里来的时间。结果应该是: Tue Aug 04 00:00:00 CDT 2020

a2mppw5e

a2mppw5e1#

默认情况下,java采用本地时区,并转换本地时区中的所有日期,如果您使用的是jdk8及更高版本,并且需要保留需要使用的日期:

@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate duedate;

有了这个变化,你的ar将保留日期而不进行转换,你可以使用 OffsetDateTime 或者 ZonedDateTime 在其他情况下保持原始日期。
希望如此 LocalDate 为你工作。

相关问题