json解析存在的精度丢失问题详解
2017-04-22 21:30
381 查看
今天遇到了一个大坑。这个问题调查了很久。一直以为是jar包或者哪里转错了。自己动手实验了一下。发现是json js 和java数值范围不同引起的。
{
“boolean”: true,
“starttimeseconds”:9223372036854122112,
“null”: null,
“number”: 11222222222222222223,
}
上边是一段json格式的字符串。经由json编辑器转成json对象的结果是starttimeseconds:9223372036854122000 ;
造成这个现象的主要原因是js中的number数值类型是双浮点精度类型即double。而java中的starttimeseconds的类型为long类型。也就是说java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下。所以在js中字符串转成js中的object的过程中数字精度发生额了丢失。
解决方法一:将starttimeseconds设置为string类型的。这个的话来回转换的 是字符串,不存在数值丢失。
方法二:protoful.js的long.js解决。
{
“boolean”: true,
“starttimeseconds”:9223372036854122112,
“null”: null,
“number”: 11222222222222222223,
}
上边是一段json格式的字符串。经由json编辑器转成json对象的结果是starttimeseconds:9223372036854122000 ;
造成这个现象的主要原因是js中的number数值类型是双浮点精度类型即double。而java中的starttimeseconds的类型为long类型。也就是说java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下。所以在js中字符串转成js中的object的过程中数字精度发生额了丢失。
解决方法一:将starttimeseconds设置为string类型的。这个的话来回转换的 是字符串,不存在数值丢失。
方法二:protoful.js的long.js解决。
相关文章推荐
- Android使用Gson解析json时候的泛类型丢失问题
- 关于iOS数据解析小数丢失精度的问题AFNetworking
- SpringMVC使用FastJson并解决长数值精度丢失问题
- Swift利用Decodable解析JSON的一个小问题详解
- iOS - Json解析精度丢失处理(NSString, Double, Float)
- Spring boot处理Long类型的Json数据,在Js代码调用时精度丢失的问题
- PHP json_decode 精度丢失问题!
- JAVA里浮点数从字符串解析丢失精度问题
- 解决json string转object,value值存在英语双引号,无法解析问题
- iOS 关于网络数据解析小数位精度丢失问题的修正
- json解析丢失精度
- java 基于jxl解析xls以及解决丢失精度问题
- FastJson与Gson转换成json串丢失精度问题
- 详解iOS开发中解析JSON中的boolean类型的数据遇到的问题
- net.sf.json数据转换出现精度丢失问题
- 解决Java中Long类型转换成Json时,在Js代码调用时精度丢失的问题
- java的long类型转为json格式后,js中精度丢失问题
- iOS - Json解析精度丢失处理(NSString, Double, Float)
- iOS - Json解析数据精度丢失处理
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法