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

springboot中如何配置LocalDateTime JSON返回時(shí)間戳

 更新時(shí)間:2023年06月01日 15:13:50   作者:jamesluozhiwei  
這篇文章主要介紹了springboot中如何配置LocalDateTime JSON返回時(shí)間戳問題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot配置LocalDateTime JSON返回時(shí)間戳

方案一

創(chuàng)建配置類

注意:使用這種方式,所有Controller的JSON數(shù)據(jù)返回,只要是LocalDateTime類型都會(huì)被轉(zhuǎn)成時(shí)間戳

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
/**
 * @author jamesluozhiwei
 * @date 2019/12/18
 */
@Configuration
public class LocalDateTimeSerializerConfig {
    /**
     * 序列化LocalDateTime
     * @return
     */
    @Bean
    @Primary
    public ObjectMapper serializingObjectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());
        objectMapper.registerModule(javaTimeModule);
        return objectMapper;
    }
    /**
     * 序列化實(shí)現(xiàn)
     */
    public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
        @Override
        public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers)
                throws IOException {
            if (value != null){
                long timestamp = value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
                gen.writeNumber(timestamp);
            }
        }
    }
    /**
     * 反序列化實(shí)現(xiàn)
     */
    public static class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
        @Override
        public LocalDateTime deserialize(JsonParser p, DeserializationContext deserializationContext)
                throws IOException {
            long timestamp = p.getValueAsLong();
            if (timestamp > 0){
                return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp),ZoneId.systemDefault());
            }else{
                return null;
            }
        }
    }
}

方案二

和方案一 一樣都是實(shí)現(xiàn)序列化和反序列化接口

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
/**
 * @author jamesluozhiwei
 * @date 2019/12/18
 */
@Configuration
public class LocalDateTimeSerializerConfig {
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> {
            builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer());
            builder.deserializerByType(LocalDateTime.class,new LocalDateTimeDeserializer());
        };
    }
    /**
     * 序列化
     */
    public static class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
        @Override
        public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers)
                throws IOException {
            if (value != null){
                long timestamp = value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
                gen.writeNumber(timestamp);
            }
        }
    }
    /**
     * 反序列化
     */
    public static class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
        @Override
        public LocalDateTime deserialize(JsonParser p, DeserializationContext deserializationContext)
                throws IOException {
            long timestamp = p.getValueAsLong();
            if (timestamp > 0){
                return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp),ZoneId.systemDefault());
            }else{
                return null;
            }
        }
    }
}

springboot中的時(shí)間以Json返回格式不正確的解決

如果后端數(shù)據(jù)庫存儲(chǔ)時(shí)間類型的數(shù)據(jù)使用了datetime類型,那么后端查出來的數(shù)據(jù)就是LocalDateTime類型,此時(shí)若以Json傳給前端,那么前端接收到的時(shí)間里就會(huì)有“T”,此時(shí)只要在傳參上加上標(biāo)簽即可:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

而如果傳給前端的是LocalDate的時(shí)間類型,前端接收到的時(shí)間也是不正常的,此時(shí)需要加上標(biāo)簽處理:

@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate bizTime;

如果以上方法還是不能解決問題,可嘗試使用:

@JSONField(format="yyyy-MM-dd HH:mm:ss")

總結(jié)

如果你有更好的方法,可以相互討論學(xué)習(xí)一下~

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

相關(guān)文章

  • 在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解

    這篇文章主要介紹了在IntelliJ IDEA 搭建springmvc項(xiàng)目配置debug的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java鏈表超詳細(xì)講解(通俗易懂,含源碼)

    Java鏈表超詳細(xì)講解(通俗易懂,含源碼)

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的引用鏈接次序?qū)崿F(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于Java鏈表超詳細(xì)講解的相關(guān)資料,本文講解的內(nèi)容通俗易懂,含源碼,需要的朋友可以參考下
    2022-09-09
  • Spring Security 自定義短信登錄認(rèn)證的實(shí)現(xiàn)

    Spring Security 自定義短信登錄認(rèn)證的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Security 自定義短信登錄認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 圖文詳解Java線程和線程池

    圖文詳解Java線程和線程池

    下面小編就為大家?guī)硪黄斦凧ava的線程和線程池。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-11-11
  • Java配置win10環(huán)境變量過程圖解

    Java配置win10環(huán)境變量過程圖解

    這篇文章主要介紹了Java配置win10環(huán)境變量過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java底層基于鏈表實(shí)現(xiàn)集合和映射--集合Set操作詳解

    Java底層基于鏈表實(shí)現(xiàn)集合和映射--集合Set操作詳解

    這篇文章主要介紹了Java底層基于鏈表實(shí)現(xiàn)集合和映射集合Set操作,結(jié)合實(shí)例形式詳細(xì)分析了Java使用鏈表實(shí)現(xiàn)集合和映射相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • SpringBoot關(guān)于自定義注解實(shí)現(xiàn)接口冪等性方式

    SpringBoot關(guān)于自定義注解實(shí)現(xiàn)接口冪等性方式

    這篇文章主要介紹了SpringBoot關(guān)于自定義注解實(shí)現(xiàn)接口冪等性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java文件(io)編程之文件字符流使用方法詳解

    Java文件(io)編程之文件字符流使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java文件(io)編程之文件字符流使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring配置文件的拆分和整合過程分析

    Spring配置文件的拆分和整合過程分析

    在實(shí)際應(yīng)用里,隨著應(yīng)用規(guī)模的增加,系統(tǒng)中 Bean 數(shù)量也大量增加,導(dǎo)致配置文件非常龐大。為了避免這種情況的產(chǎn)生,提高配置文件的可讀性與可維護(hù)性,可以將Spring 配置文件分解成多個(gè)配置文件,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • 淺談springioc實(shí)例化bean的三個(gè)方法

    淺談springioc實(shí)例化bean的三個(gè)方法

    下面小編就為大家?guī)硪黄獪\談springioc實(shí)例化bean的三個(gè)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就想給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論

永泰县| 马关县| 营口市| 吴桥县| 武汉市| 久治县| 安泽县| 星子县| 汉阴县| 莱阳市| 烟台市| 云霄县| 黎川县| 广安市| 于田县| 泾阳县| 交城县| 高阳县| 巨鹿县| 新疆| 当阳市| 静宁县| 毕节市| 高台县| 芒康县| 佛山市| 海门市| 铜鼓县| 南昌市| 大洼县| 贡觉县| 东平县| 确山县| 集安市| 伊宁县| 长垣县| 韶关市| 太谷县| 荥经县| 新丰县| 永安市|