Java序列化JSON时long型数值,会出现精度丢失的问题。
原因:
java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值).
解决办法(一):
使用ToStringSerializer的注解,让系统序列化
时,保留相关精度
@JsonSerialize(using=ToStringSerializer.class)
private Long createdBy;
上述方法需要在每个对象都配上该注解,此方法过于繁锁。
解决办法(二):(推荐)
使用全局配置,将转换时实现自动ToStringSerializer序列化
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.BrowserCompatible);
//解决Long转json精度丢失的问题
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.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
修复Long类型太长,而Java序列化JSON丢失精度问题的方法
本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火-穿越时空》 => 修复Long类型太长,而Java序列化JSON丢失精度问题的方法
本文地址:http://ilkhome.cn/index.php/archives/447/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 修复Long类型太长,而Java序列化JSON丢失精度问题的方法,谢谢。
版权所有:《电光石火-穿越时空》 => 修复Long类型太长,而Java序列化JSON丢失精度问题的方法
本文地址:http://ilkhome.cn/index.php/archives/447/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 修复Long类型太长,而Java序列化JSON丢失精度问题的方法,谢谢。