JSON 未正确转换长数字

标签 json numbers converter

我有一个简单的 JSON,其中数字没有被正确解析。

[
  {
    "orderNumber": 1,
    "customerId": 228930314431312345,
    "shoppingCartId": 22893031443137109,
    "firstName": "jjj"
  }
]

我试过了@ http://www.utilities-online.info/xmltojson/结果是
<?xml version="1.0" encoding="UTF-8" ?>
<orderNumber>1</orderNumber>
<customerId>228930314431312350</customerId>
<shoppingCartId>22893031443137108</shoppingCartId>
<firstName>jjj</firstName>

如您所见....XML 与 JSON 不同。我是 JSON 的新手。我错过了什么吗?

最佳答案

这是一个 Javascript 精度问题。

根据 Mozilla 开发者网络:

ECMA-262 only requires a precision of up to 21 significant digits. Other implementations may not support precisions higher than required by the standard.



来源:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toPrecision

我将您的数组粘贴到 Google Chrome 的 Javascript 控制台中并得到了这个:
Javascript precision bug

因此,看起来 Javascript 在将值转换为 XML 之前会对其进行四舍五入。由于您的转换是通过浏览器中的 Javascript 完成的,地址为 http://www.utilities-online.info/xmltojson/ ,这说明为什么更改了数字。

(注:我使用 Windows 7 Professional 在 Google Chrome 版本 26.0.1410.43 m 上进行了测试)

编辑:

有什么理由不能将这些值作为字符串传递给 Javascript?

尝试这个:
[
  {
    "orderNumber": "1",
    "customerId": "228930314431312345",
    "shoppingCartId": "22893031443137109",
    "firstName": "jjj"
  }
]

我能够做到这一点并成功保存值。但是,您将无法在 Javascript 中对它们进行数学计算而不会损失一些精度,除非您正在执行乘以 0 之类的操作,当然。

Javascript precision string workaround

这也使用您的引用 http://www.utilities-online.info/xmltojson/ 正确转换为 XML .

关于JSON 未正确转换长数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869275/

相关文章:

json - 提取JSONObject并通过HashMap字段进行迭代

Python 3.4 : Trying to . rjust 一个完整的数字循环

php - GIF 到 mp4 转换

java - 获取 Json 响应 Api

json - 如何使用 Laravel response()->json() 返回空对象而不是空数组

根据用户请求创建多个整数

python - 如何将 Avg() 舍入到最接近的整数? Django

php - 免费(最好)PHP RTF 到 HTML 转换器?

java - 如何在 Java 中将对象从一种类型复制到另一种类型?

ios - 无法从 JSON 中提取数组