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

springboot中使用FastJson解決long類型在js中失去精度的問題

 更新時間:2022年06月15日 11:16:20   作者:Nightliar  
這篇文章主要介紹了springboot中使用FastJson解決long類型在js中失去精度的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用FastJson解決long類型在js中失去精度問題

1.pom中需要將默認(rèn)的jackson排除掉

<dependency>
? ? <groupId>org.springframework.boot</groupId>
? ? <artifactId>spring-boot-starter-web</artifactId>
? ? <exclusions>
? ? ? ? <!-- json庫統(tǒng)一使用fastjson -->
? ? ? ? <exclusion>
? ? ? ? ? ? <groupId>com.fasterxml.jackson.core</groupId>
? ? ? ? ? ? <artifactId>jackson-databind</artifactId>
? ? ? ? </exclusion>
? ? </exclusions>
</dependency>

2.利用fastJson替換掉jackson

    package com.nightliar.bootdemo.config.spring;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.nightliar.bootdemo.interceptor.GlobalInterceptor;
import com.nightliar.bootdemo.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Nightliar
 * 2018-08-15 11:09
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    /**
     * 添加攔截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry){
        //全局?jǐn)r截器
        registry.addInterceptor(new GlobalInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/static/**");
        //登陸攔截器
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/static/**");
    }
    /**
     * 利用fastJson替換掉jackson,且解決中文亂碼問題
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters){
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
                SerializerFeature.DisableCircularReferenceDetect,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullNumberAsZero,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.WriteNonStringKeyAsString,
                SerializerFeature.BrowserCompatible);
        //解決Long轉(zhuǎn)json精度丟失的問題
        SerializeConfig serializeConfig = SerializeConfig.globalInstance;
        serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
        serializeConfig.put(Long.class, ToStringSerializer.instance);
        serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
        fastJsonConfig.setSerializeConfig(serializeConfig);
        //處理中文亂碼問題
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        converters.add(fastConverter);
    }
}

springboot long精度缺失問題

?/**
? ? ?* 解決Jackson導(dǎo)致Long型數(shù)據(jù)精度丟失問題
? ? ?* @return
? ? ?*/
? ? @Bean("jackson2ObjectMapperBuilderCustomizer")
? ? public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
? ? ? ? Jackson2ObjectMapperBuilderCustomizer customizer = new Jackson2ObjectMapperBuilderCustomizer() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
? ? ? ? ? ? ? ? jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance)
? ? ? ? ? ? ? ? ? ? ? ? .serializerByType(Long.TYPE, ToStringSerializer.instance);
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? return customizer;
}

問題

jackson2ObjectMapperBuilderCustomizer不生效

主要是重復(fù)了

在WebMvcConfigurer中添加

@Autowired(required = false)
? ? private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter;
?
? ? @Override
? ? public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
? ? ? ? converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
? ? ? ? if (Objects.isNull(mappingJackson2HttpMessageConverter)) {
? ? ? ? ? ? converters.add(0, new MappingJackson2HttpMessageConverter());
? ? ? ? } else {
? ? ? ? ? ? converters.add(0, mappingJackson2HttpMessageConverter);
? ? ? ? }
}

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

相關(guān)文章

  • Java中finally關(guān)鍵字對返回值的影響詳解

    Java中finally關(guān)鍵字對返回值的影響詳解

    這篇文章主要介紹了Java中finally關(guān)鍵字對返回值的影響詳解,執(zhí)行完try catch里面內(nèi)容準(zhǔn)備return時,如果還有finally需要執(zhí)行這是編譯器會為我們增加一個全局變量去暫存return 的值,等到finally執(zhí)行完成去return這個全局變量,需要的朋友可以參考下
    2024-01-01
  • Java Socket+mysql實現(xiàn)簡易文件上傳器的代碼

    Java Socket+mysql實現(xiàn)簡易文件上傳器的代碼

    最近在做一個小項目,項目主要需求是實現(xiàn)一個文件上傳器,通過客戶端的登陸,把本地文件上傳到服務(wù)器的數(shù)據(jù)庫(本地的)。下面通過本文給大家分享下實現(xiàn)代碼,感興趣的朋友一起看看吧
    2016-10-10
  • Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊

    Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊

    這篇文章主要介紹了Spring Cloud Stream如何實現(xiàn)服務(wù)之間的通訊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Spring boot 集成 Druid 數(shù)據(jù)源過程詳解

    Spring boot 集成 Druid 數(shù)據(jù)源過程詳解

    這篇文章主要介紹了Spring boot 集成 Druid 數(shù)據(jù)源過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • SpringBoot中的多個事務(wù)管理詳解

    SpringBoot中的多個事務(wù)管理詳解

    這篇文章主要介紹了SpringBoot中的多個事務(wù)管理詳解,事務(wù)管理是一種組織和協(xié)調(diào)各種活動和資源的方法,以實現(xiàn)特定目標(biāo),它涉及規(guī)劃、執(zhí)行和監(jiān)控各種任務(wù),以確保項目或組織的順利運行,需要的朋友可以參考下
    2023-10-10
  • HttpsURLConnection上傳文件流(實例講解)

    HttpsURLConnection上傳文件流(實例講解)

    下面小編就為大家?guī)硪黄狧ttpsURLConnection上傳文件流(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java maven中如何引入自己的lib

    java maven中如何引入自己的lib

    在JavaMaven項目中引入自己的庫可以簡化為幾個步驟:首先,確保庫以JAR格式存在或打包成JAR;其次,將JAR文件放置在項目目錄或安裝到本地Maven倉庫;最后,在pom.xml中添加依賴,這樣做可以使項目更加模塊化,便于管理和維護(hù),感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • SpringBoot啟動之SpringApplication初始化詳解

    SpringBoot啟動之SpringApplication初始化詳解

    這篇文章主要介紹了SpringBoot啟動之SpringApplication初始化詳解,首先初始化資源加載器,默認(rèn)為null;斷言判斷主要資源類不能為null,否則報錯,需要的朋友可以參考下
    2024-01-01
  • Spring?AOP簡介及統(tǒng)一處理

    Spring?AOP簡介及統(tǒng)一處理

    AOP面向切面編程,它是一種思想,它是對某一類事情的集中處理,本文給大家介紹Spring?AOP簡介及統(tǒng)一處理,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • 深入了解Java中的過濾器Filter和監(jiān)聽器Listener

    深入了解Java中的過濾器Filter和監(jiān)聽器Listener

    這篇文章主要為大家詳細(xì)介紹了Java中的過濾器Filter和監(jiān)聽器Listener的使用以及二者的區(qū)別,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06

最新評論

府谷县| 融水| 穆棱市| 贵南县| 盐津县| 女性| 新津县| 昔阳县| 防城港市| 四会市| 宁阳县| 元阳县| 张家口市| 钦州市| 安新县| 泰和县| 隆昌县| 临城县| 台州市| 彩票| 东海县| 伊宁县| 巴林右旗| 咸丰县| 鄯善县| 保亭| 宜宾县| 丁青县| 延川县| 个旧市| 鄂温| 彭山县| 大余县| 运城市| 长沙市| 蓬安县| 南安市| 阳高县| 宝丰县| 汉中市| 从化市|