所以我有一个像这样的对象
@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)
我的pom
<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 行中,使用第 1 行中的 ObjectMapper
,
而不是创建一个新的。)
def ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule())
def requestBodyJson = objectMapper.writeValueAsString(dtoObject)
那么 JSON 输出将是这样的:
{"date":"2021-01-17","startTime":"22:59:15"}
关于java - Jackson objectMapper,尝试将 LocalDate 序列化为 "yyyy-MM-dd",将 LocalTime 序列化为 "HH:mm:ss",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65751960/