拿到后台数据后JSON.parse()发现数据跟原本不一致要如何解决

从后台获取到的JSON为一个字符串形式的数据:

{"createTime":1528773852384,"dealPrice":"0.000000","id":19144683686985728,"isView":true,"totalPrice":"1.000000","waitProduct":"1.000000"}

这条数据的id为19144683686985728,但JSON.parse()后发现数据转换后被改动了

{
    "createTime": 1528773852384,
    "dealPrice": "0.000000",
    "id": 19144683686985730,
    "isView": true,
    "totalPrice": "1.000000",
    "waitProduct": "1.000000"
}

id后两位从28改成了30,应该如何让它正常解析,求解,最好是能前端解决

阅读 7.1k
5 个回答

JSON.parse是没法用的,大于安全值Number.MAX_SAFE_INTEGER(2^53-1),精度不够无法表示。
后台返回string吧。

这个不是解析造成的,你抓下包看看传过来的数据本身是否错误

JS 中能精准表示的最大整数是 Math.pow(2, 53),十进制即 9007199254740992.你这样表示数字就可能丢失精度,数字不准确
建议让后端id传个字符串过来

var value = json.match(/"id":(d+)/)[1];
var data = JSON.parse(json);
data.id = value;

返回字符串"id":"19144683686985728"就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题