一尘不染

node.js是否有任何适当的方法可以解析大量的JSON?(long,bigint,int64)

node.js

当我解析这小块JSON时

{ "value" : 9223372036854775807 }

那就是我得到的

{ hello: 9223372036854776000 }

有什么办法可以正确解析它吗?


阅读 294

收藏
2020-07-07

共1个答案

一尘不染

不适用于内置的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}
2020-07-07