新聞中心
前端后接口對(duì)接時(shí),如果后臺(tái)的id或者其他字段使用了長整型Long,就很容易出現(xiàn)js丟失精度問題。用接口工具調(diào)用時(shí),往往id返回都是對(duì)的,但是一到頁面上,js就后綴000。
前端說返回的值有問題,F(xiàn)12看看!后端說沒問題,Postman看看!
這是js支持的問題,解決這個(gè)問題的辦法很顯然,返回字符串即可。
怎么實(shí)現(xiàn)呢,你可以直接將vo對(duì)象的id改成String類型,但是會(huì)帶來copyProperties的不便,所以見過很多人通過增加虛擬字段實(shí)現(xiàn)。下面是一個(gè)整體解決方案:(需要略微了解下Spring的消息序列化原理,譬如MappingJackson2HttpMessageConverter是干嘛的)
MainConfig(通常是主config類,@Configuration注解的,用來導(dǎo)入一些基礎(chǔ)配置)增加MessageConvert的重寫extendMessageConverters:
@Override public void extendMessageConverters(List
> converters) { MappingJackson2HttpMessageConverter jacksonConverter = null; for (HttpMessageConverter> converter : converters) { if (converter instanceof MappingJackson2HttpMessageConverter) { jacksonConverter = (MappingJackson2HttpMessageConverter) converter; } } if (jacksonConverter != null) { jacksonConverter.setObjectMapper(new CustomObjectMapper()); converters.add(jacksonConverter); } } - CustomObjectMapper的實(shí)現(xiàn):
public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { super(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); registerModule(simpleModule); } }
這樣,接口返回的時(shí)候,所有的長整型字段,會(huì)被當(dāng)做字符串處理,自動(dòng)加上雙引號(hào)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:長整型Long返回到前端,js出現(xiàn)精度丟失怎么辦-創(chuàng)新互聯(lián)
分享URL:http://ef60e0e.cn/article/djicgs.html