欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

LocalDateTime傳值JSON格式化問題

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

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

推薦方法

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

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

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

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

源碼如下:

// import ...
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
?? ?
?? ?/**
?? ? * 自定義String轉(zhuǎn)LocalDateTime方法,此方法將會作用于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);
? ? ? ? }
? ? }
?? ?/**
?? ? * 將上述自定義方法進行添加
?? ? */
? ? @Override
? ? public void addFormatters(FormatterRegistry registry) {
? ? ? ? registry.addConverter(new StringToLocalDateTimeConverter());
? ? }
?? ?
?? ?/**
?? ? * 增加序列化與反序列化器,它們將作用于實體類的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) {
?? ?...
}

實體類:

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

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

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

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)全局的格式化方式無法滿足我們需求時,我們對日期格式要做特殊的處理:在類的屬性上添加注解

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

加上效果后:

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

相關(guān)文章

  • Java使用Unsafe類的示例詳解

    Java使用Unsafe類的示例詳解

    java不能直接訪問操作系統(tǒng)底層,而是通過本地方法來訪問。Unsafe類提供了硬件級別的原子操作,這篇文章主要介紹了Java使用Unsafe類,需要的朋友可以參考下
    2021-09-09
  • java線程之用Thread類創(chuàng)建線程的方法

    java線程之用Thread類創(chuàng)建線程的方法

    本篇文章介紹了,Thread類創(chuàng)建線程的方法。需要的朋友參考下
    2013-05-05
  • Java中的強引用,軟引用,弱引用,虛引用的作用介紹

    Java中的強引用,軟引用,弱引用,虛引用的作用介紹

    這篇文章主要介紹了Java中的強引用,軟引用,弱引用,虛引用的作用,下文內(nèi)容具有一定的知識參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • Apache?Hudi異步Clustering部署操作的掌握

    Apache?Hudi異步Clustering部署操作的掌握

    這篇文章主要介紹了Apache?Hudi異步Clustering部署操作的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • JavaWeb實現(xiàn)簡單上傳文件功能

    JavaWeb實現(xiàn)簡單上傳文件功能

    這篇文章主要為大家詳細介紹了JavaWeb實現(xiàn)簡單上傳文件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法

    C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法

    這篇文章主要介紹了C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法,相比普通方法能夠在Windows下簡化很多操作步驟,需要的朋友可以參考下
    2016-04-04
  • SpringBoot中@EnableAutoConfiguration注解的實現(xiàn)

    SpringBoot中@EnableAutoConfiguration注解的實現(xiàn)

    Spring Boot@EnableAutoConfiguration是一個強大的工具,可以簡化配置過程,從而實現(xiàn)快速開發(fā),本文主要介紹了SpringBoot中@EnableAutoConfiguration注解的實現(xiàn),感興趣的可以了解一下
    2024-01-01
  • 淺談Java中Spring Boot的優(yōu)勢

    淺談Java中Spring Boot的優(yōu)勢

    在本篇文章中小編給大家分析了Java中Spring Boot的優(yōu)勢以及相關(guān)知識點內(nèi)容,興趣的朋友們可以學(xué)習(xí)參考下。
    2018-09-09
  • Java微服務(wù)實戰(zhàn)項目尚融寶接口創(chuàng)建詳解

    Java微服務(wù)實戰(zhàn)項目尚融寶接口創(chuàng)建詳解

    這篇文章主要介紹了Java微服務(wù)實戰(zhàn)項目尚融寶的接口創(chuàng)建流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java遍歷集合的三種方式

    Java遍歷集合的三種方式

    本文主要對于遍歷集合獲取其對象,總結(jié)的三種簡單的方式進行介紹,文章中舉了兩個案例進行對比,具有很好的參考價值,下面就跟小編一起來看下吧
    2016-12-12

最新評論