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

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

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

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

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

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

一般在項目中這樣配置可以解決單個實體類中的字段序列化,如果項目中的實體類非常多,這種配置方式就會顯得非常麻煩。所以我們可以調(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() {

        // 序列化時對Long類型進行處理,避免前端js處理數(shù)據(jù)時精度缺失
        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);
    }

}

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    解決@Validated對List對象驗證失效問題

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

    詳解Java springboot 整合Shiro框架

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

最新評論

阜南县| 五寨县| 翁牛特旗| 深州市| 山丹县| 蓬溪县| 缙云县| 广宁县| 饶河县| 鲁山县| 延边| 东宁县| 南丹县| 鲁甸县| 基隆市| 灌南县| 武平县| 周口市| 深圳市| 施秉县| 荔波县| 云阳县| 景谷| 沁水县| 南宫市| 丰宁| 五寨县| 静宁县| 亚东县| 中方县| 鱼台县| 潮安县| 呈贡县| 桂平市| 松原市| 买车| 玉树县| 旬阳县| 肥城市| 太仆寺旗| 城市|