[英]Convert String of this “yyyy-MM-dd'T'HH:mm:ss.SSSXXX” format to LocalDate
[英]Jackson objectMapper, trying to serialize LocalDate into "yyyy-MM-dd" and LocalTime into "HH:mm:ss"
所以我有一個這樣的 object
@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;
}
我正在嘗試將 map 轉換為一個字符串,然后我得到一個這樣的字符串
"{
"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}}"
我怎樣才能將它們 map 轉換為日期格式為“yyyy-mm-dd”、時間格式為“HH:mm:ss”的字符串
我如何映射 object
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
。 這將為 java.time package 的類安裝一堆java.time
序列化器/解串器。
(順便說一句:在您的第 2 行中,使用第 1 行中的ObjectMapper
,而不是創建一個新的。)
def ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule())
def requestBodyJson = objectMapper.writeValueAsString(dtoObject)
那么 JSON output 會是這樣的:
{"date":"2021-01-17","startTime":"22:59:15"}
如果您不想為您的項目添加額外的依賴項,您可以自己創建一個序列化程序。 注釋您的成員:
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate date;
並創建序列化程序:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateSerializer extends StdSerializer<LocalDate> {
private static final long serialVersionUID = -4746126944463708083L;
public LocalDateSerializer() {
super(LocalDate.class);
}
@Override
public void serialize(LocalDate value, JsonGenerator generator, SerializerProvider sp) throws IOException {
if (value != null) {
generator.writeString(value.format(DateTimeFormatter.ISO_LOCAL_DATE));
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.