在web项目中,从Java后端传递的长/长类型在前端JS接收中会失去精度。
本文推荐第三、第四方式第一方式简单粗暴,所有Lang类型改为String,数据库改为varchar类型;
第二种方法是自己创建配置类
扩展webmvcconfigureradapter已过时。 直接实现WebMvcConfigurer接口就可以了
@ enablewebmvc @ configurationpublicclasswebdataconvertconfigimplementswebmvcconfigurer { publicvoidconfiguremesssageconverterter } 转换器(mapping害怕孤独的行人2httpmessageconvertertwdxlb2httpmessageconverter=new mapping害怕孤独的行人2 httpmessageconverter ); objectmapperobjectmapper=new对象映射器(; /**将序列转换为json时,将所有长整型转换为字符串*。 js的数值类型包含所有java long值*/simplemodulesimplemodule=newsimplemodule (simple module.add serializer (long.class,tostring series ) simple module.add serializer (long.type,ToStringSerializer.instance ); 对象映射器. register module (简单模块; tw dxl B2 httpmessageconverter.setobjectmapper (object mapper ); 转换程序. add (tw dxl B2 httpmessageconverter; 6第三种方法是使用害怕孤独的行人2
@Configurationpublic class惧怕孤独的行人Config {/** *惧怕孤独的行人总体上将长类型转换为字符串,解决twdxlb序列化时长类型的丢失精度问题* @return惧怕孤独的行人2ObjectMapperBuilderCustomizer注入对象*/@Bean public惧怕孤独的行人2 objectmapperbuildercustomizertwdxlb2objectmapperbuilillb { returntwdxlbobjectmapperbuilder-twdxlbobjectmapperbuilder.serializerbytype (long.class,tostringserializer.instancer ) }第四种方法(缺点:将所有数字类型转换为字符串) bootstrap.yml添加以下配置:
spring: twdxlb: #将所有number类型转换为String并返回generator : write _ numbers _ as _ strings 3360 true #的时间yyyy-mm-dddd