首頁 > Java > java教程 > 如何在 Spring Data JPA JSON 序列化中將 ZonedDateTime 格式化為 ISO 8601?

如何在 Spring Data JPA JSON 序列化中將 ZonedDateTime 格式化為 ISO 8601?

DDD
發布: 2024-12-13 18:16:18
原創
770 人瀏覽過

How to Format ZonedDateTime to ISO 8601 in Spring Data JPA JSON Serialization?

Spring Data JPA:在 JSON 序列化中格式化 ZonedDateTime

Spring Data JPA 支援 Java 8 日期和時間類型到資料庫列的對應。但是,ZonedDateTime 的預設 JSON 序列化格式可以產生詳細輸出。本文探討如何在 JSON 序列化過程中將 ZonedDateTime 格式化為 ISO 格式。

問題陳述

儘管使用 @DateTimeFormat 註解和 iso = DateTimeFormat.ISO.DATE_TIME,ZonedDateTime 的 JSON 序列化仍然會產生一個詳細的物件。目標是將 ZonedDateTime 格式化為更簡潔的 ISO 格式。

JSON 序列化問題可能是由 Jackson 引起的,Jackson 在 Spring Data JPA 中處理 JSON 序列化。要解決此問題,需要新增 Jackson 的 Java 8 日期和時間 API 模組。

依賴項新增

將以下相依性新增至您的 pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.6.0</version>
</dependency>
登入後複製

模組註冊

新增依賴後,註冊JavaModule Jackson:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
登入後複製

格式化程式自訂

ZonedDateTime getter 方法上的 @JsonFormat 註解可用於在序列化過程中自訂日期格式。例如:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
public ZonedDateTime getTime() {
    return time;
}
登入後複製

這會將 ZonedDateTime 格式化為 ISO 格式:yyyy-MM-dd'T'HH:mm:ss.SSSZ。

範例

以下範例示範了JavaTimeModule的用法和格式自訂:

public static void main(String[] args) throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    System.out.println(objectMapper.writeValueAsString(new Entity()));
}

static class Entity {
    ZonedDateTime time = ZonedDateTime.now();

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    public ZonedDateTime getTime() {
        return time;
    }
}
登入後複製

此範例的輸出將是:

{"time":"2015-07-25T23:09:01.795+0700"}
登入後複製

此範例的輸出將是:

此範例的輸出將是:此範例的輸出將是:此範例的輸出將是:結論透過加入Jackson 的JavaTimeModule 並使用@JsonFormat註解,您可以控制ZonedDateTime 的 JSON 序列化格式,防止傳輸不必要的數據,優化效能並減少 JSON 負載的大小。

以上是如何在 Spring Data JPA JSON 序列化中將 ZonedDateTime 格式化為 ISO 8601?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板