java - Jackson objectMapper,试图将 LocalDate 序列化为“yyyy-MM-dd”,将 LocalTime 序列化为“HH:mm:ss”
问题描述
所以我有一个像这样的对象
@EqualsAndHashCode
@Builder
@NoArgsConstructor
@Getter
@Setter
@AllArgsConstructor
public class CreateBookingDto implements Serializable {
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate date;
@JsonFormat(pattern="HH:mm:ss")
private LocalTime startTime;
}
我正在尝试将它映射到一个字符串,我得到一个像这样的字符串
"{
"date":
{"year":2021,"month":"JANUARY","dayOfWeek":"SATURDAY","era":"CE","chronology":{"id":"ISO","calendarType":"iso8601"},"dayOfYear":16,"leapYear":false,"monthValue":1,"dayOfMonth":16},
"startTime":
{"hour":16,"minute":33,"second":13,"nano":721065000}}"
如何将它们映射到日期格式为“yyyy-mm-dd”和时间格式为“HH:mm:ss”的字符串
我如何映射对象
def objectMapper = new ObjectMapper()
def requestBodyJson = new ObjectMapper().writeValueAsString(dtoObject)
我的绒球
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.12.1</version>
<type>pom</type>
</dependency>
解决方案
您需要注册JavaTimeModule
到您的ObjectMapper
. 这将为包的类安装一堆 JSON 序列化器/反序列化器java.time
。
(顺便说一句:在你的第 2 行,使用第ObjectMapper
1 行,而不是创建一个新的。)
def ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule())
def requestBodyJson = objectMapper.writeValueAsString(dtoObject)
然后 JSON 输出将是这样的:
{"date":"2021-01-17","startTime":"22:59:15"}
推荐阅读
- flutter - 在颤动中调整 Z-Index
- javascript - bootstrap 4 滑块旋转木马多旋转木马内部
- statistics - 这个谬误有名字吗?
- javascript - 渐进式 Web 应用 (PWA) 可以向用户的“本地主机”发出 REST 请求吗?
- python - Python中的Excel密码恢复
- spring-boot - KafkaBindingRebalanceListener Bean 未由 KafkaMessageChannelBinder Bean 自动装配
- php - 为用户创建具有无限空间的组
- java - if else if 和嵌套 if 之间有什么相似之处吗?
- javascript - Javascript尝试将字符串解析为数组
- javascript - 有人遇到SlowDown:上传文件大文件> 1GB时降低请求率响应?