我有一个类,它将被序列化为JSON,具有以下属性:
@JsonProperty("validTo")
@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME)
private OffsetDateTime validTo;
我还在Jackson中使用了默认的Spring启动ObjectMapper,如果validTo
DateTime有非零的毫秒/纳秒,这个方法可以正常工作,但是,如果它们是零,那么结果将根本不包括它们。
值OffsetDateTime.of(2000, 10, 10, 10, 10, 10, 1000000, ZoneOffset.UTC)
将正确转换为2000-10-10T10:10:10.001Z
但是OffsetDateTime.of(2000, 10, 10, 10, 10, 10, 0, ZoneOffset.UTC)
会错误地转换为2000-10-10T10:10:10Z
为什么会这样呢?注解中使用的javadoc格式将其描述为The most common ISO Date Time Format yyyy-MM-dd'T'HH:mm:ss.SSSXXX — for example, "2000-10-31T01:30:00.000-05:00".
,其中似乎包含零。
1条答案
按热度按时间cvxl0en21#
看起来Jackson忽略了
@DateTimeFormat
注解,而真实的的序列化发生在com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer
中。如果像这样注解字段,则可以测试它(不会影响结果):