node.js是否有任何正确的方法来parsing大数字的JSON? (long,bigint,int64)

当我parsing这个JSON的一小块

{ "value" : 9223372036854775807 } 

这就是我得到的

 { hello: 9223372036854776000 } 

有什么办法可以正确parsing吗?

不包含内置的JSON.parse。 你需要手动parsing它,并把值作为string处理(如果你想对它们进行运算,有bignumber.js )你可以使用Douglas Crockford JSON.js库作为parsing器的基础。

编辑:我为你创build了一个包 🙂

 var JSONbig = require('json-bigint'); var json = '{ "value" : 9223372036854775807, "v2": 123 }'; console.log('Input:', json); console.log(''); console.log('node.js bult-in JSON:') var r = JSON.parse(json); console.log('JSON.parse(input).value : ', r.value.toString()); console.log('JSON.stringify(JSON.parse(input)):', JSON.stringify(r)); console.log('\n\nbig number JSON:'); var r1 = JSONbig.parse(json); console.log('JSON.parse(input).value : ', r1.value.toString()); console.log('JSON.stringify(JSON.parse(input)):', JSONbig.stringify(r1)); 

输出:

 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}