Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js有没有合适的方法来解析大量的JSON?(long、bigint、int64)_Node.js_Long Integer_Bigint_Int64 - Fatal编程技术网

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}

您可以使用此代码将大数字更改为字符串,然后使用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是有效的。需要什么?这是来自requireJS的吗?有点像。示例应该从node.js运行。有没有什么方法可以在没有node.js的情况下运行?比如在浏览器环境中?我无法理解这一点,我只需要更改一些长值并将其转换为JSON对象。您需要连接我创建的捆绑包,您可以使用-添加并使用JSONbig.parse/JSONbig.stringifyYou确定
“value”:9223372036854776000,
是否为预期结果?虽然可以创建只引用数字的regexp,但提供的regexp给出的结果不正确。此外,它也会中断已经引用的数或引文串的部分。正确的正则表达式将是:/([0-9] {15,30} {{0,1}[09] { 0,})/g,中间没有$。
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}