十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
前端后接口對(duì)接時(shí),如果后臺(tái)的id或者其他字段使用了長(zhǎng)整型Long,就很容易出現(xiàn)js丟失精度問(wèn)題。用接口工具調(diào)用時(shí),往往id返回都是對(duì)的,但是一到頁(yè)面上,js就后綴000。
前端說(shuō)返回的值有問(wèn)題,F(xiàn)12看看!后端說(shuō)沒(méi)問(wèn)題,Postman看看!
這是js支持的問(wèn)題,解決這個(gè)問(wèn)題的辦法很顯然,返回字符串即可。
怎么實(shí)現(xiàn)呢,你可以直接將vo對(duì)象的id改成String類(lèi)型,但是會(huì)帶來(lái)copyProperties的不便,所以見(jiàn)過(guò)很多人通過(guò)增加虛擬字段實(shí)現(xiàn)。下面是一個(gè)整體解決方案:(需要略微了解下Spring的消息序列化原理,譬如MappingJackson2HttpMessageConverter是干嘛的)
創(chuàng)新互聯(lián)公司主營(yíng)豐城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),豐城h5小程序設(shè)計(jì)搭建,豐城網(wǎng)站營(yíng)銷(xiāo)推廣歡迎豐城等地區(qū)企業(yè)咨詢
MainConfig(通常是主config類(lèi),@Configuration注解的,用來(lái)導(dǎo)入一些基礎(chǔ)配置)增加MessageConvert的重寫(xiě)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);
}
}
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í)候,所有的長(zhǎng)整型字段,會(huì)被當(dāng)做字符串處理,自動(dòng)加上雙引號(hào)。