node.js有没有合适的方法来解析大量的JSON?(long、bigint、int64)

node.js有没有合适的方法来解析大量的JSON?(long、bigint、int64),node.js,long-integer,bigint,int64,Node.js,Long Integer,Bigint,Int64,当我解析这段JSON时 { "value" : 9223372036854775807 } 这就是我得到的 { hello: 9223372036854776000 } 有没有办法正确解析它 不使用内置的JSON.parse。您需要手动解析它,并将值作为字符串处理(如果您想对它们进行算术运算,那么就可以使用Douglas Crockford库作为解析器的基础 EDIT2(原始答案发布7年后)-使用标准JSON api可能很快就能解决这个问题。请看一下TC39建议,将对源字符串的访问添加到恢

当我解析这段JSON时

{ "value" : 9223372036854775807 }
这就是我得到的

{ hello: 9223372036854776000 } 

有没有办法正确解析它

不使用内置的JSON.parse。您需要手动解析它,并将值作为字符串处理(如果您想对它们进行算术运算,那么就可以使用Douglas Crockford库作为解析器的基础

EDIT2(原始答案发布7年后)-使用标准JSON api可能很快就能解决这个问题。请看一下TC39建议,将对源字符串的访问添加到恢复器函数-

编辑1:我为你创建了一个:)

输出:

Input: { "value" : 9223372036854775807, "v2": 123 }

node.js bult-in JSON:
JSON.parse(input).value :  9223372036854776000
JSON.stringify(JSON.parse(input)): {"value":9223372036854776000,"v2":123}


big number JSON:
JSON.parse(input).value :  9223372036854775807
JSON.stringify(JSON.parse(input)): {"value":9223372036854775807,"v2":123}

不使用内置的JSON.parse。您需要手动解析它,并将值作为字符串处理(如果您想对它们进行算术运算,那么就可以使用Douglas Crockford库作为解析器的基础

EDIT2(原始答案发布7年后)-使用标准JSON api可能很快就能解决这个问题。请看一下TC39建议,将对源字符串的访问添加到恢复器函数-

编辑1:我为你创建了一个:)

输出:

Input: { "value" : 9223372036854775807, "v2": 123 }

node.js bult-in JSON:
JSON.parse(input).value :  9223372036854776000
JSON.stringify(JSON.parse(input)): {"value":9223372036854776000,"v2":123}


big number JSON:
JSON.parse(input).value :  9223372036854775807
JSON.stringify(JSON.parse(input)): {"value":9223372036854775807,"v2":123}

您可以使用此代码将大数字更改为字符串,然后使用BigInt(data.value)

let str='{“value”:-9223372036854775807,“value1”:“100”}
让data=JSON.parse(str.replace(/([^“^\d])([^”^\d])([^“^\d])/g,$1“$2“$3”);
log(BigInt(data.value.toString());

控制台日志(数据)您可以使用此代码将大数字更改为字符串,然后使用BigInt(data.value)

let str='{“value”:-9223372036854775807,“value1”:“100”}
让data=JSON.parse(str.replace(/([^“^\d])([^”^\d])([^“^\d])/g,$1“$2“$3”);
log(BigInt(data.value.toString());

控制台日志(数据)也许这是相关的,谢谢,但我知道js中的整数精度,现在我需要从C#web服务解析JSON,它没有大整数的问题。可以创建一个regexp,它可以有选择地将所有整数或仅大整数或所有数字转换为字符串,假设JSON是有效的。也许这是相关的,谢谢,但我知道js中的整数精度,现在我需要从C#web服务解析JSON,它没有大整数的问题。可以创建一个regexp,假设JSON是有效的,它可以有选择地将所有整数或大整数或所有数字转换为字符串。需要什么?这是来自requireJS的吗?有点像。示例应该从node.js运行。有没有什么方法可以在没有node.js的情况下运行?比如在浏览器环境中?我无法理解这一点,我只需要更改一些长值并将其转换为JSON对象。您需要将我创建的捆绑包中的++连接到一个网页,使用-只需添加并使用JSONbig.parse/JSONbig.stringify需要什么?这是来自requireJS的吗?有点像。示例应该从node.js运行。有没有什么方法可以在没有node.js的情况下运行?比如在浏览器环境中?我无法理解这一点,我只需要更改一些长值并将其转换为JSON对象。您需要连接我创建的捆绑包,您可以使用-添加并使用JSONbig.parse/JSONbig.stringifyYou确定
“value”:9223372036854776000,
是否为预期结果?虽然可以创建只引用数字的regexp,但提供的regexp给出的结果不正确。此外,它还将打断已经被引用的数字或被引用字符串的一部分。正确的regexp将是:/([0-9]{15,30}\.{0,1}[0-9]{0,})/g,中间没有$您确定
“value”:9223372036854776000,
是预期的结果吗?虽然可以创建只引用数字的regexp,提供的regexp给出了不正确的结果。此外,它也会中断已经引用的数或引文串的部分。正确的正则表达式将是:/([0-9] {15,30} {{0,1}[09] { 0,})/g,中间没有$。