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

springboot中json對(duì)象中對(duì)Long類型和String類型相互轉(zhuǎn)換

 更新時(shí)間:2023年11月07日 09:01:00   作者:臘筆不小新xingo  
與前端聯(lián)調(diào)接口時(shí),后端一些字段設(shè)計(jì)為L(zhǎng)ong類型,這樣就有可能導(dǎo)致前端缺失精度,這時(shí)候我們就需要將Long類型返回給前端時(shí)做數(shù)據(jù)類型轉(zhuǎn)換,本文主要介紹了springboot中json對(duì)象中對(duì)Long類型和String類型相互轉(zhuǎn)換,感興趣的可以了解一下

與前端聯(lián)調(diào)接口時(shí),后端一些字段設(shè)計(jì)為L(zhǎng)ong類型,這樣就有可能導(dǎo)致前端缺失精度,這時(shí)候我們就需要將Long類型返回給前端時(shí)做數(shù)據(jù)類型轉(zhuǎn)換,在使用springboot開發(fā)時(shí),默認(rèn)的json序列化和反序列化使用的是Jackson,所以可以有兩種處理方式。

第一種是直接在字段上面添加注解,指定序列化字段類型:

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

一般在項(xiàng)目中這樣配置可以解決單個(gè)實(shí)體類中的字段序列化,如果項(xiàng)目中的實(shí)體類非常多,這種配置方式就會(huì)顯得非常麻煩。所以我們可以調(diào)整Jackson的配置,在全局指定序列化配置:

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ObjectMapper.class)
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class JacksonConfiguration {

    private final Map<Class<?>, JsonSerializer<?>> serializers = new LinkedHashMap<>(5);

    private final Map<Class<?>, JsonDeserializer<?>> deserializers = new LinkedHashMap<>(3);

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {

        // 序列化時(shí)對(duì)Long類型進(jìn)行處理,避免前端js處理數(shù)據(jù)時(shí)精度缺失
        serializers.put(Long.class, ToStringSerializer.instance);
        serializers.put(Long.TYPE, ToStringSerializer.instance);

        // java8日期處理
        serializers.put(LocalDateTime.class,
                new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        serializers.put(LocalDate.class,
                new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        serializers.put(LocalTime.class,
                new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        deserializers.put(LocalDateTime.class,
                new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        deserializers.put(LocalDate.class,
                new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        deserializers.put(LocalTime.class,
                new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        return customizer -> customizer
                .featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS,
                        SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
                        SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS,
                        DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
                //.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)    // 駝峰字段轉(zhuǎn)下劃線字段
                .serializationInclusion(Include.NON_NULL).serializersByType(serializers)
                .deserializersByType(deserializers).simpleDateFormat("yyyy-MM-dd HH:mm:ss").timeZone("GMT+8")
                .locale(Locale.SIMPLIFIED_CHINESE);
    }

}

第二種方式可以避免每個(gè)實(shí)體類中都配置序列化方式,但是這種方式也限制了項(xiàng)目的靈活性,它會(huì)對(duì)全局?jǐn)?shù)據(jù)都產(chǎn)生影響,對(duì)比第一種它顯然不夠靈活。

到此這篇關(guān)于springboot中json對(duì)象中對(duì)Long類型和String類型相互轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)springboot Long類型和String類型轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用EasyExcel實(shí)現(xiàn)百萬級(jí)別數(shù)據(jù)導(dǎo)出的代碼示例

    使用EasyExcel實(shí)現(xiàn)百萬級(jí)別數(shù)據(jù)導(dǎo)出的代碼示例

    近期需要開發(fā)一個(gè)將百萬數(shù)據(jù)量MySQL8的數(shù)據(jù)導(dǎo)出到excel的功能,所以本文講給大家介紹了基于EasyExcel實(shí)現(xiàn)百萬級(jí)別數(shù)據(jù)導(dǎo)出,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 一文詳解Java中的JSON數(shù)據(jù)處理指南

    一文詳解Java中的JSON數(shù)據(jù)處理指南

    JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,在Web服務(wù)和應(yīng)用程序之間廣泛使用,本文詳細(xì)介紹了在Java中解析和操作JSON數(shù)據(jù)的步驟,包括導(dǎo)入庫(kù)、創(chuàng)建JSON對(duì)象和數(shù)組、讀取數(shù)據(jù)、創(chuàng)建和序列化JSON對(duì)象,以及錯(cuò)誤處理等,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)體與 vo 對(duì)象轉(zhuǎn)換返回功能

    mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)體與 vo

    這篇文章主要介紹了mybatis-plus 自定義 Service Vo接口實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)體與 vo 對(duì)象轉(zhuǎn)換返回功能,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 關(guān)于Java限流功能的簡(jiǎn)單實(shí)現(xiàn)

    關(guān)于Java限流功能的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了關(guān)于Java限流功能的簡(jiǎn)單實(shí)現(xiàn),在Java中,限流是一種常見的技術(shù)手段,用于控制系統(tǒng)的訪問速率,以保護(hù)系統(tǒng)免受過載和濫用,需要的朋友可以參考下
    2023-07-07
  • SpringSecurity多表多端賬戶登錄的實(shí)現(xiàn)

    SpringSecurity多表多端賬戶登錄的實(shí)現(xiàn)

    本文主要介紹了SpringSecurity多表多端賬戶登錄的實(shí)現(xiàn)
    2024-05-05
  • Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    這篇文章主要為大家詳細(xì)介紹了Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java動(dòng)態(tài)規(guī)劃之丑數(shù)問題實(shí)例講解

    Java動(dòng)態(tài)規(guī)劃之丑數(shù)問題實(shí)例講解

    這篇文章主要介紹了Java動(dòng)態(tài)規(guī)劃之丑數(shù)問題實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問題

    myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問題

    這篇文章主要介紹了myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 解決@Validated對(duì)List對(duì)象驗(yàn)證失效問題

    解決@Validated對(duì)List對(duì)象驗(yàn)證失效問題

    文章指出@Validated注解無法驗(yàn)證List數(shù)組參數(shù),建議手動(dòng)逐項(xiàng)驗(yàn)證或封裝List為對(duì)象進(jìn)行驗(yàn)證,前者代碼冗余但直接,后者需調(diào)整JSON結(jié)構(gòu)但更簡(jiǎn)潔,根據(jù)需求選擇方案,權(quán)衡靈活性與參數(shù)改造成本
    2025-09-09
  • 詳解Java springboot 整合Shiro框架

    詳解Java springboot 整合Shiro框架

    這篇文章主要為大家介紹了Java springboot 整合Shiro框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評(píng)論

巴彦县| 康乐县| 改则县| 夏津县| 城步| 新乐市| 剑川县| 余江县| 岳普湖县| 左云县| 神木县| 施秉县| 武陟县| 临邑县| 鲁甸县| 红安县| 介休市| 岢岚县| 苍溪县| 兴海县| 嘉黎县| 新巴尔虎右旗| 灌阳县| 广饶县| 汾阳市| 藁城市| 惠安县| 宝坻区| 鞍山市| 凯里市| 原平市| 德庆县| 波密县| 花垣县| 佳木斯市| 资兴市| 临高县| 汾西县| 无为县| 榆社县| 镇赉县|