最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot?中的?@DateTimeFormat?和?@JsonFormat?的用法及作用詳解

 更新時(shí)間:2024年11月28日 11:41:24   作者:小林想被監(jiān)督學(xué)習(xí)  
本文介紹了SpringBoot中的@DateTimeFormat和@JsonFormat注解的用法,解釋了它們?cè)谔幚砣掌诤蜁r(shí)間數(shù)據(jù)時(shí)的作用,并通過(guò)實(shí)例代碼展示了如何在REST控制器中使用這些注解,感興趣的朋友跟隨小編一起看看吧

        在開發(fā) Spring Boot 應(yīng)用時(shí),處理日期和時(shí)間數(shù)據(jù)是一個(gè)常見的需求。Spring Boot 提供了兩個(gè)注解 @DateTimeFormat@JsonFormat 來(lái)幫助我們處理這些問題。這兩個(gè)注解分別用于將日期字符串解析為日期對(duì)象以及將日期對(duì)象格式化為字符串。本文將詳細(xì)介紹這兩個(gè)注解的用法及作用,并通過(guò)實(shí)例代碼進(jìn)行說(shuō)明。

@DateTimeFormat 注解

@DateTimeFormat 是一個(gè) Spring 框架提供的注解,用于格式化和解析日期時(shí)間字段。它主要用于將請(qǐng)求參數(shù)或表單數(shù)據(jù)中的日期字符串解析為 Java 的日期對(duì)象。

用法

@DateTimeFormat 可以應(yīng)用于以下數(shù)據(jù)類型:

  • java.util.Date
  • java.util.Calendar
  • java.time.LocalDate
  • java.time.LocalDateTime
  • java.time.ZonedDateTime

該注解的常用屬性包括:

  • pattern:指定日期格式的模式字符串,例如 "yyyy-MM-dd"。
  • iso:指定標(biāo)準(zhǔn)的 ISO 日期時(shí)間格式??蛇x值為 DateTimeFormat.ISO.DATEDateTimeFormat.ISO.TIMEDateTimeFormat.ISO.DATE_TIME。

示例

假設(shè)我們有一個(gè)處理日期的 REST 控制器:

package com.example.demo.controller;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@RestController
public class DateController {
    @GetMapping("/date")
    public String handleDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
        return "Parsed date: " + date.format(DateTimeFormatter.ISO_DATE);
    }
    @GetMapping("/datetime")
    public String handleDateTime(@RequestParam("datetime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime dateTime) {
        return "Parsed datetime: " + dateTime.format(DateTimeFormatter.ISO_DATE_TIME);
    }
}

在上述示例中:

  • /date 端點(diǎn)處理格式為 "yyyy-MM-dd" 的字符串,并將其解析為 LocalDate 對(duì)象。
  • /datetime 端點(diǎn)處理 ISO 標(biāo)準(zhǔn)格式的日期時(shí)間字符串,并將其解析為 LocalDateTime 對(duì)象。

你可以通過(guò)以下 URL 測(cè)試這些端點(diǎn):

http://localhost:8080/date?date=2023-10-01
http://localhost:8080/datetime?datetime=2023-10-01T10:15:30

@JsonFormat 注解

@JsonFormat 是 Jackson 庫(kù)提供的注解,用于序列化和反序列化 JSON 數(shù)據(jù)中的日期時(shí)間字段。它可以幫助我們將日期時(shí)間對(duì)象格式化為特定的字符串格式,或?qū)⑻囟ǜ袷降淖址馕鰹槿掌跁r(shí)間對(duì)象。

用法

@JsonFormat 可以應(yīng)用于類的字段或方法上。其常用屬性包括:

  • pattern:指定日期時(shí)間格式的模式字符串。
  • shape:指定日期時(shí)間的格式化類型。常用值為 JsonFormat.Shape.STRING
  • timezone:指定時(shí)區(qū)。

示例

假設(shè)我們有一個(gè)包含日期時(shí)間字段的實(shí)體類,并使用 @JsonFormat 注解格式化日期時(shí)間:

package com.example.demo.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class Event {
    private String name;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate date;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private LocalDateTime dateTime;
    // getters and setters
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public LocalDate getDate() {
        return date;
    }
    public void setDate(LocalDate date) {
        this.date = date;
    }
    public LocalDateTime getDateTime() {
        return dateTime;
    }
    public void setDateTime(LocalDateTime dateTime) {
        this.dateTime = dateTime;
    }
}

接著,我們創(chuàng)建一個(gè) REST 控制器來(lái)測(cè)試該實(shí)體類的序列化和反序列化:

package com.example.demo.controller;
import com.example.demo.model.Event;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
@RestController
public class EventController {
    @GetMapping("/event")
    public Event getEvent() {
        Event event = new Event();
        event.setName("Spring Boot Workshop");
        event.setDate(LocalDate.of(2023, 10, 1));
        event.setDateTime(LocalDateTime.of(2023, 10, 1, 10, 15, 30));
        return event;
    }
    @PostMapping("/event")
    public String createEvent(@RequestBody Event event) {
        // 持久化邏輯...
        return "Event created: " + event.getName();
    }
}

在上述示例中:

  • /event GET 端點(diǎn)返回一個(gè) Event 對(duì)象,其中日期和日期時(shí)間字段將根據(jù) @JsonFormat 注解指定的格式序列化為 JSON 字符串。
  • /event POST 端點(diǎn)接受一個(gè) JSON 請(qǐng)求體,并將其反序列化為 Event 對(duì)象。

你可以通過(guò)以下方式測(cè)試這些端點(diǎn):

GET 請(qǐng)求

curl -X GET http://localhost:8080/event

返回結(jié)果:

{
    "name": "Spring Boot Workshop",
    "date": "2023-10-01",
    "dateTime": "2023-10-01 10:15:30"
}

POST 請(qǐng)求

curl -X POST http://localhost:8080/event -H "Content-Type: application/json" -d '{
    "name": "Spring Boot Workshop",
    "date": "2023-10-01",
    "dateTime": "2023-10-01 10:15:30"
}'

返回結(jié)果:

Event created: Spring Boot Workshop

小結(jié)

        在本文中,我們?cè)敿?xì)介紹了 Spring Boot 中的 @DateTimeFormat@JsonFormat 注解的用法及作用。@DateTimeFormat 主要用于將請(qǐng)求參數(shù)或表單數(shù)據(jù)中的日期字符串解析為日期對(duì)象,而 @JsonFormat 則用于序列化和反序列化 JSON 數(shù)據(jù)中的日期時(shí)間字段。

        通過(guò)這些注解,我們可以更方便地處理日期和時(shí)間數(shù)據(jù),確保數(shù)據(jù)在不同層次間傳遞時(shí)的格式一致性。這對(duì)于開發(fā)高質(zhì)量的 Spring Boot 應(yīng)用至關(guān)重要

到此這篇關(guān)于Spring Boot 中的 @DateTimeFormat 和 @JsonFormat 的用法及作用的文章就介紹到這了,更多相關(guān)Spring Boot @DateTimeFormat 和 @JsonFormat內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot配置Jackson返回統(tǒng)一默認(rèn)值的實(shí)現(xiàn)示例

    springboot配置Jackson返回統(tǒng)一默認(rèn)值的實(shí)現(xiàn)示例

    在項(xiàng)目開發(fā)中,我們返回的數(shù)據(jù)或者對(duì)象沒有的時(shí)候一般直接返回的null,那么如何返回統(tǒng)一默認(rèn)值,感興趣的可以了解一下
    2021-07-07
  • Java中String類常用方法詳細(xì)匯總

    Java中String類常用方法詳細(xì)匯總

    Java中String類在所有項(xiàng)目開發(fā)里面一定會(huì)用到,因此String類提供了一系列的功能操作方法,下面這篇文章主要給大家介紹了關(guān)于Java中String類常用方法的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Java如何判斷一個(gè)IP是否在給定的網(wǎng)段內(nèi)

    Java如何判斷一個(gè)IP是否在給定的網(wǎng)段內(nèi)

    這篇文章主要介紹了Java如何判斷一個(gè)IP是否在給定的網(wǎng)段內(nèi)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot如何集成Kafka低版本和高版本

    SpringBoot如何集成Kafka低版本和高版本

    這篇文章主要介紹了SpringBoot如何集成Kafka低版本和高版本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • java反射機(jī)制最詳解

    java反射機(jī)制最詳解

    這篇文章主要介紹了Java 反射機(jī)制原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了Java反射機(jī)制的相關(guān)概念、原理、基本使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • java生成XML的方法【附demo源碼下載】

    java生成XML的方法【附demo源碼下載】

    這篇文章主要介紹了java生成XML的方法,涉及java針對(duì)xml格式文件的簡(jiǎn)單操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-12-12
  • MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis在四大對(duì)象的創(chuàng)建過(guò)程中,都會(huì)有插件進(jìn)行介入。插件可以利用動(dòng)態(tài)代理機(jī)制一層層的包裝目標(biāo)對(duì)象,而實(shí)現(xiàn)在目標(biāo)對(duì)象執(zhí)行目標(biāo)方法之前進(jìn)行攔截的效果
    2022-11-11
  • springboot集成mybatis-plus遇到的問題及解決方法

    springboot集成mybatis-plus遇到的問題及解決方法

    這篇文章主要介紹了springboot集成mybatis-plus遇到的問題及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • SpringMVC上傳圖片代碼實(shí)例

    SpringMVC上傳圖片代碼實(shí)例

    這篇文章主要介紹了SpringMVC上傳圖片代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Seata?AT模式TM處理流程圖文示例詳解

    Seata?AT模式TM處理流程圖文示例詳解

    這篇文章主要為大家介紹了Seata?AT模式TM處理流程圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

年辖:市辖区| 泸州市| 昌平区| 闽清县| 密山市| 新郑市| 兴仁县| 武安市| 满城县| 九江市| 平利县| 东明县| 浪卡子县| 寿阳县| 乌拉特前旗| 阆中市| 裕民县| 城口县| 财经| 安宁市| 老河口市| 乐都县| 日土县| 巫溪县| 耿马| 石嘴山市| 会同县| 卢龙县| 吴江市| 濮阳市| 阆中市| 延吉市| 镇原县| 五台县| 朝阳区| 盐源县| 慈利县| 达日县| 吴川市| 闽清县| 清远市|