丽水专业网站建设哪家好,东莞做网站多少钱,wordpress 开发 知乎,深圳网站ui设计造成原因#xff1a;JS内置有32位整数#xff0c;而number类型的安全整数是53位。如果超过53位#xff0c;则精度会丢失。正如现在后台传来一个64位的Long型整数#xff0c;因此超过了53位#xff0c;所以后台返回的值和前台获取的值会不一样。Java序列化JSON时long型数值…造成原因JS内置有32位整数而number类型的安全整数是53位。如果超过53位则精度会丢失。正如现在后台传来一个64位的Long型整数因此超过了53位所以后台返回的值和前台获取的值会不一样。Java序列化JSON时long型数值,会出现精度丢失的问题。原因java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值).解决办法一使用ToStringSerializer的注解让系统序列化时保留相关精度JsonSerialize(usingToStringSerializer.class)private Long createdBy;FastJson 注解JSONField(serializeUsing ToStringSerializer.class)上述方法需要在每个对象都配上该注解此方法过于繁锁。解决办法(二)使用全局配置将转换时实现自动ToStringSerializer序列化Overridepublic void configureMessageConverters(List converters) {MappingJackson2HttpMessageConverter jackson2HttpMessageConverter new MappingJackson2HttpMessageConverter();ObjectMapper objectMapper new ObjectMapper();/*** 序列换成json时,将所有的long变成string* 因为js中得数字类型不能包含所有的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);项目中很多时候都会用到json常用的有fastjsonJackson等等这些有时候为了统一我们通常就会约定使用某一种。当然有时候项目中也可能会统一约定使用了fastjson然而Spring MVC中默认是使用了Jackson的在Spring Boot中将Jackson替换为fastjson一般会有两种方式第一种Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {Beanpublic HttpMessageConverters fastJsonHttpMessageConverter() {return new HttpMessageConverters(new FastJsonHttpMessageConverter());}}第二种Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {Overridepublic void configureMessageConverters(List converters) {FastJsonHttpMessageConverter fastConverter new FastJsonHttpMessageConverter();FastJsonConfig fastJsonConfig new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);fastConverter.setFastJsonConfig(fastJsonConfig);converters.add(fastConverter);}}替换成fastjson之后对于精度丢失问题我们可以这么去做Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {Overridepublic void configureMessageConverters(List converters) {FastJsonHttpMessageConverter fastConverter new FastJsonHttpMessageConverter();FastJsonConfig fastJsonConfig new FastJsonConfig();SerializeConfig serializeConfig SerializeConfig.globalInstance;serializeConfig.put(BigInteger.class, ToStringSerializer.instance);serializeConfig.put(Long.class, ToStringSerializer.instance);serializeConfig.put(Long.TYPE, ToStringSerializer.instance);fastJsonConfig.setSerializeConfig(serializeConfig);fastConverter.setFastJsonConfig(fastJsonConfig);converters.add(fastConverter);}}