当我解析这小块JSON时
{ "value" : 9223372036854775807 }
那就是我得到的
{ hello: 9223372036854776000 }
有什么办法可以正确解析它吗?
不适用于内置的JSON.parse。您需要手动对其进行解析,并将值视为字符串(如果您想对它们进行算术运算,则可以使用bignumber.js)。您可以将Douglas Crockford JSON.js库用作解析器的基础。
编辑:我为您创建了一个包 :)
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}