【发布时间】:2019-10-03 03:09:42
【问题描述】:
我正在使用 Spring Boot 开发 API,并且正在使用 Jackson 进行有效负载(反)序列化。我想将 ISO-8601 格式的日期时间反序列化为 java.time.Instant,但不想支持以毫秒或纳秒为单位从纪元时间反序列化。我只想支持以一种格式提供给我的 API 的数据,以减少客户端出错的机会。
目前,Jackson 将 ISO-8601 格式的字符串和仅包含数字的字符串反序列化为 Instant,例如"20190520".
我是否可以在 Instant 字段上使用 Jackson 注释,或者我可以设置属性以应用这种行为?还是自定义反序列化器是我唯一的选择?
【问题讨论】:
-
我认为没有设置可以启用此功能。编写自己的自定义 JsonSerializer 应该是唯一的方法,即
@JsonSerialize(using = CustomSerializer.class) private Instant time;。
标签: java spring-boot datetime design-patterns jackson