1. 程式人生 > >springboot解決Long型別資料傳入前端損失精度

springboot解決Long型別資料傳入前端損失精度

之前在做springboot專案時遇到Long型別資料直接用@ResponseBody返回資料自動轉換成json時,不做任何處理,而直接傳給前端的話,在Long長度大於17位時會出現精度丟失的問題。之後使用自定義訊息轉化器全部轉為String解決。程式碼如下:@EnableWebMvc //預設情況下Spring Boot 使用WebMvcAutoConfiguration中配置的各種屬性@EnableWebMvc使WebMvcAutoConfiguration失效,Springmvc完全由自己控制@Configuration //標明瞭JsonDataConvertConfig 類是一個配置類並且會將該類作為一個
SpringBean新增到IOC容器內
public class JsonDataConvertConfig extends WebMvcConfigurerAdapter{ @Override    //重寫WebMvcConfigurerAdapterconfigureMessageConverters抽象方法public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new
MappingJackson2HttpMessageConverter(); //ObjectMapper Jackson庫的主要類。它提供一些功能將轉換成Java物件匹配JSON結構,反之亦然 ObjectMapper objectMapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule(); //序列化將Long轉String型別 simpleModule.addSerializer(Long.class, ToStringSerializer.instance
); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); SimpleModule bigIntegerModule = new SimpleModule();        //序列化將BigInteger轉String型別 bigIntegerModule.addSerializer(BigInteger.class, ToStringSerializer.instance); SimpleModule bigDecimalModule = new SimpleModule();        //序列化將BigDecimal轉String型別 bigDecimalModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); objectMapper.registerModule(bigDecimalModule); objectMapper.registerModule(bigIntegerModule); jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(jackson2HttpMessageConverter); }}

注:WebMvcConfigurerAdapter實現了WebMvcConfigurer的所有方法,都是空實現,需要什麼個性化配置,需要自己繼承並重寫對應的配置方法,WebMvcConfigurerAdapter實現的方法跟springmvc.xml裡的配置一樣,具體方法見:https://blog.csdn.net/wujiaqi0921/article/details/78324722