JSON.parse& JSON.stringify将长整数作为字符串

时间:2015-10-29 14:28:39

标签: javascript json

我遇到了问题,我需要在API中解析长整数。由于我没有算术地做任何事情,因此最容易将它们作为字符串来处理。我试过了Bignumber.js,但是如果数字超过15个字符,它会开始抱怨。不幸的是我也必须处理它们。

由于我没有对它进行算术处理,实际上甚至将这些数字存储为字符串我想要一个JSON解析器,它解析字符数过大而且能够将它们视为JSON.stringify中的数字。

我尝试使用替换函数进行stringify,但是我无法摆脱数字周围的引号。

我也找不到一个只关心这个问题的库。

编辑/澄清

我希望我的大号码在javascript中是一个字符串,但在JSON中是一个数字(在JSON.stringify之后)

e.g。 Javascript中的对象

var myObj = {
    id: "89074987798719283473" // <-- String within javascript
}

var objString = JSON.stringify(myObj)

现在我的objString应该是

  

{id:89074987798719283473}

而不是

  

{id:“89074987798719283473”}

1 个答案:

答案 0 :(得分:1)

如果你绝对必须这样做并且真的找不到更好的处理方法,那么请记住JSON只是一个字符串,所有用于字符串操作的工具都可以解决这个问题。所以你可以这样做:

var myObj = {
    id: "89074987798719283473" // <-- String within javascript
}

var json = JSON.stringify(myObj);   // this is {"id":"89074987798719283473"}

var numberJson = json.replace(/"id":"(\d+)"/,'"id":$1');    // this is now {"id":89074987798719283473}

console.log(numberJson);

当然这很容易出错并且容易出错,因为你必须非常小心你所匹配的东西(你可能有一些名为id的属性嵌套在你不想被操纵的json中)。如果你想让它更健壮一些,你可以在字符串化之前在id的末尾添加一些内容,以便更容易在字符串中查找和替换它。