为什么Json.parse会在嵌套对象中不断更改interger值

时间:2016-05-29 04:59:46

标签: javascript jquery json ajax

my obj = {
    "formname": ["appname", {
        "operation": ["add", {
            "values": {
                "Activation_code": "12345",
                "ID": 722756000010586033,
                "game_Id": "10000"
            },
            "status": "Success"
        }]
    }]
}

上面的代码是来自服务器的我的对象我没有问题得到的点是为什么JSON.parse(obj)在对象经过其功能后更改ID。

因此在解析后它会将ID吐回722756000010586000为什么?

1 个答案:

答案 0 :(得分:0)

数字精度的cos,你的id超过最大安全整数,我建议把它保持为字符串。

console.log(722756000010586033 > Number.MAX_SAFE_INTEGER)
console.log(722756000010586033);

基本上有一些有限的内存用于在JS中存储数字,并且有限的momory可以记住有限数量的数字。这有点复杂,但基本上就是这样。

您可以使用正则表达式提取您的ID:

const JSON = `{
    "formname": ["appname", {
        "operation": ["add", {
            "values": {
                "Activation_code": "12345",
                "ID": 722756000010586033,
                "game_Id": "10000"
            },
            "status": "Success"
        }]
    }]
}`;

const matched = JSON.match(/"ID":\s*(\d+),/);
const id = matched[1];

document.body.innerHTML = id;