SpringBoot全局配置long轉String丟失精度的問題解決
web項目中,Java后端傳過來的Long/long類型,前端JS接收會丟失精度。
本文推薦第三、第四種方式
第一種方式
簡單粗暴,將所有的Lang類型,改為String,數(shù)據(jù)庫改成varchar類型;
第二種方式
自己建個配置類
extends WebMvcConfigurerAdapter 已經(jīng)被棄用,直接實現(xiàn)WebMvcConfigurer該接口就行了
@EnableWebMvc
@Configuration
public class WebDataConvertConfig implements WebMvcConfigurer {
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
/**
* 序列換成json時,將所有的long變成string
* 因為js中得數(shù)字類型不能包含所有的java long值
*/
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
第三種方式
使用Jackson2
@Configuration
public class JacksonConfig {
/**
* Jackson全局轉化long類型為String,解決jackson序列化時long類型缺失精度問題
* @return Jackson2ObjectMapperBuilderCustomizer 注入的對象
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
}
第四種方式(缺點:將所有的數(shù)字類型都會轉為字符串)
bootstrap.yml添加以下配置:
spring:
jackson:
#將所有的number類型轉為String返回
generator:
write_numbers_as_strings: true
#格式化返回時間 yyyy-MM-dd HH:mm:ss
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
到此這篇關于SpringBoot全局配置long轉String丟失精度的問題解決的文章就介紹到這了,更多相關SpringBoot long轉String丟失精度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springcloud gateway網(wǎng)關服務啟動報錯的解決
這篇文章主要介紹了springcloud gateway網(wǎng)關服務啟動報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
idea創(chuàng)建properties文件,解決亂碼問題
這篇文章主要介紹了idea創(chuàng)建properties文件,解決亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
解決分頁插件pagehelper在SpringBoot不起作用的問題
這篇文章主要介紹了解決分頁插件pagehelper在SpringBoot不起作用的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
Java通過經(jīng)緯度坐標獲取兩個點之間的直線距離的示例
這篇文章主要介紹了Java通過經(jīng)緯度坐標獲取兩個點之間的直線距離的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
SpringBoot實現(xiàn)對數(shù)據(jù)庫慢查詢監(jiān)控的方案小結
在企業(yè)級應用開發(fā)中,數(shù)據(jù)庫性能往往是系統(tǒng)整體性能的關鍵瓶頸,因此,對數(shù)據(jù)庫慢查詢進行有效監(jiān)控和及時優(yōu)化,是保障系統(tǒng)穩(wěn)定運行的重要環(huán)節(jié),下面我們來看看SpringBoot實現(xiàn)慢查詢的6種監(jiān)控方案吧2025-06-06
Spring StateMachine實現(xiàn)狀態(tài)機使用示例詳解
本文介紹SpringStateMachine實現(xiàn)狀態(tài)機的步驟,包括依賴導入、枚舉定義、狀態(tài)轉移規(guī)則配置、上下文管理及服務調(diào)用示例,重點解析狀態(tài)同步、事件觸發(fā)與數(shù)據(jù)持久化機制,感興趣的朋友跟隨小編一起看看吧2025-07-07

