SpringBoot全局配置long轉(zhuǎn)String丟失精度問題解決方案
web項(xiàng)目中,前端JS使用Java后端傳過來的Long/long會(huì)丟失精度。
后端將返回的數(shù)據(jù)改為String使用即可
第一種
自己建個(gè)配置類
extends WebMvcConfigurerAdapter 已經(jīng)被棄用,直接實(shí)現(xiàn)WebMvcConfigurer該接口就行了
@EnableWebMvc@Configurationpublic class WebDataConvertConfig implements WebMvcConfigurer { public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); /** * 序列換成json時(shí),將所有的long變成string * 因?yàn)閖s中得數(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
@Configurationpublic class JacksonConfig { /** * Jackson全局轉(zhuǎn)化long類型為String,解決jackson序列化時(shí)long類型缺失精度問題 * @return Jackson2ObjectMapperBuilderCustomizer 注入的對(duì)象 */@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {Jackson2ObjectMapperBuilderCustomizer cunstomizer = new Jackson2ObjectMapperBuilderCustomizer() {@Overridepublic void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);}};return cunstomizer;}
自己項(xiàng)目使用的時(shí)候,第二種未能生效。可能是由于不是使用的jackson2??。使用第一種可以,遂采用了第一種
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢(shì)在哪?2. 詳解Android studio 動(dòng)態(tài)fragment的用法3. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)4. 基于android studio的layout的xml文件的創(chuàng)建方式5. Android如何加載Base64編碼格式圖片6. 什么是python的自省7. 圖文詳解vue中proto文件的函數(shù)調(diào)用8. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟9. 在IDEA中實(shí)現(xiàn)同時(shí)運(yùn)行2個(gè)相同的java程序10. 解決Android studio xml界面無法預(yù)覽問題

網(wǎng)公網(wǎng)安備