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

如何解決LocalDateTime傳值JSON格式化問題

 更新時(shí)間:2022年08月27日 10:30:41   作者:達(dá)希_  
這篇文章主要介紹了如何解決LocalDateTime傳值JSON格式化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

LocalDateTime傳值JSON格式化問題

LocalDateTime是JDK8中提供的新功能,極大的優(yōu)化了原生日期時(shí)間類的使用。

但是第一次使用該類可能會(huì)在傳值過程中出現(xiàn)格式化的小問題(如:JSON無法解析前端所傳格式,序列化時(shí)LocalDateTime成為數(shù)組等),以下提供簡(jiǎn)單的解決方案。

推薦方法

在WebMvcConfigurer實(shí)現(xiàn)類下完成以下兩步

1).注冊(cè)一個(gè)Converter<String, LocalDateTime>實(shí)現(xiàn)類,其作用是處理于url所攜帶的參數(shù)上(如:@RequestParam、@PathVariable )的LocalDateTime參數(shù);

2).增加一個(gè)序列化、反序列化器,作用為處理實(shí)體類的的LocalDateTime屬性。

P.S.經(jīng)過多輪測(cè)試,得出了以上方法,由于該方法需要以上兩個(gè)步驟,作為完美主義者,我曾嘗試用一個(gè)步驟解決,但并未如愿以償,若你有更好的方法,還望不吝賜教,先行謝過。

源碼如下:

// import ...
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
?? ?
?? ?/**
?? ? * 自定義String轉(zhuǎn)LocalDateTime方法,此方法將會(huì)作用于url所攜帶的參數(shù)上
?? ? */
? ? static class StringToLocalDateTimeConverter implements Converter<String, LocalDateTime> {
? ? ? ? @Override
? ? ? ? public LocalDateTime convert(String s) {
? ? ? ? ? ? DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
? ? ? ? ? ? return LocalDateTime.parse(s, formatter);
? ? ? ? }
? ? }
?? ?/**
?? ? * 將上述自定義方法進(jìn)行添加
?? ? */
? ? @Override
? ? public void addFormatters(FormatterRegistry registry) {
? ? ? ? registry.addConverter(new StringToLocalDateTimeConverter());
? ? }
?? ?
?? ?/**
?? ? * 增加序列化與反序列化器,它們將作用于實(shí)體類的LocalDateTime屬性。
?? ? */
? ? @Override
? ? public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
? ? ? ? DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
? ? ? ? ObjectMapper objectMapper = new ObjectMapper();
? ? ? ? JavaTimeModule module = new JavaTimeModule();
? ? ? ? module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(pattern));
? ? ? ? module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(pattern));
? ? ? ? objectMapper.registerModule(module);
? ? ? ? converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
? ? }
}

其它方法

url參數(shù):

給參數(shù)加上@DateTimeFormat(此注解來自Spring,無需引入其他包),在pattern中標(biāo)注約定好的格式即可。

public void Test(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
?? ?...
}

實(shí)體類:

在實(shí)體類中的屬性上添加@JsonFormat(此注解來自Jackson,該包被Spring所依賴,無需導(dǎo)入),同樣在pattern中標(biāo)注好格式。

@Data
public class Demo {
? ? @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
? ? private LocalDateTime time;
? ??
}

由于這種方法需要對(duì)代碼中所有的LocalDateTime都進(jìn)行標(biāo)注,相對(duì)麻煩,且耦合度高,所以不作推薦。

LocalDateTime的json格式化問題

LocalDateTime 的 json 格式化存在問題如圖所示:

解決方式一

添加json格式化配置文件:

@Configuration
public class LocalDateTimeSerializerConfig {
    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
    private String pattern;
    public LocalDateTimeSerializer localDateTimeDeserializer() {
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
    }
}

解決方式二

@JsonFormat 注解

上面的方案全局生效,當(dāng)全局的格式化方式無法滿足我們需求時(shí),我們對(duì)日期格式要做特殊的處理:在類的屬性上添加注解

@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "創(chuàng)建時(shí)間")
private LocalDateTime createTime;

加上效果后:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot文件上傳保存路徑的問題

    springboot文件上傳保存路徑的問題

    這篇文章主要介紹了springboot文件上傳保存路徑的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java行為型模式中命令模式分析

    Java行為型模式中命令模式分析

    在軟件設(shè)計(jì)中,我們經(jīng)常需要向某些對(duì)象發(fā)送請(qǐng)求,但是并不知道請(qǐng)求的接收者是誰,也不知道被請(qǐng)求的操作是哪個(gè),我們只需在程序運(yùn)行時(shí)指定具體的請(qǐng)求接收者即可,此時(shí)可以使用命令模式來進(jìn)行設(shè)計(jì)
    2023-02-02
  • Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證

    Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)驗(yàn)證碼的產(chǎn)生和驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2012-01-01
  • Java Structs框架原理案例詳解

    Java Structs框架原理案例詳解

    這篇文章主要介紹了Java Structs框架原理案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java連接數(shù)據(jù)庫知識(shí)點(diǎn)總結(jié)以及操作應(yīng)用

    java連接數(shù)據(jù)庫知識(shí)點(diǎn)總結(jié)以及操作應(yīng)用

    這篇文章主要給大家介紹了關(guān)于java連接數(shù)據(jù)庫知識(shí)點(diǎn)總結(jié)以及操作應(yīng)用的相關(guān)資料, 當(dāng)涉及到Java中數(shù)據(jù)庫數(shù)據(jù)處理時(shí),我們可以利用強(qiáng)大的Java數(shù)據(jù)庫連接技術(shù)與各種數(shù)據(jù)庫進(jìn)行交互,需要的朋友可以參考下
    2023-12-12
  • Spring Web項(xiàng)目spring配置文件隨服務(wù)器啟動(dòng)時(shí)自動(dòng)加載

    Spring Web項(xiàng)目spring配置文件隨服務(wù)器啟動(dòng)時(shí)自動(dòng)加載

    這篇文章主要介紹了Spring Web項(xiàng)目spring配置文件隨服務(wù)器啟動(dòng)時(shí)自動(dòng)加載,加載spring的配置文件,并且只加載一次,從而提高程序效率。具體內(nèi)容詳情大家通過本文一起學(xué)習(xí)吧
    2018-01-01
  • sharding-jdbc5.0.0實(shí)現(xiàn)分表實(shí)踐

    sharding-jdbc5.0.0實(shí)現(xiàn)分表實(shí)踐

    本文主要介紹了sharding-jdbc5.0.0分表實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解Java中的封裝、繼承、多態(tài)

    詳解Java中的封裝、繼承、多態(tài)

    本文主要介紹了Java中的封裝、繼承、多態(tài)的相關(guān)知識(shí),具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • 全面解析JPA?倉庫repository中的findAll()方法

    全面解析JPA?倉庫repository中的findAll()方法

    這篇文章主要介紹了全面解析JPA?倉庫repository中的findAll()方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實(shí)現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務(wù)端)代碼實(shí)例

    Java實(shí)現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務(wù)端)代碼實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)TCP/IP協(xié)議的收發(fā)數(shù)據(jù)(服務(wù)端)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

兰考县| 定西市| 忻州市| 故城县| 石阡县| 富民县| 剑阁县| 屯留县| 长泰县| 大埔区| 和林格尔县| 巴林左旗| 蒙城县| 岑溪市| 榆中县| 湖州市| 古田县| 南昌县| 甘肃省| 淮阳县| 卢湾区| 泸溪县| 通许县| 古浪县| 平江县| 利津县| 大理市| 韶关市| 吴堡县| 平原县| 大兴区| 肇东市| 临夏县| 东光县| 罗江县| 克什克腾旗| 永福县| 温泉县| 华亭县| 南开区| 叶城县|