node.js existe-t-il un moyen approprié d’parsingr JSON avec un grand nombre? (long, bigint, int64)

Quand j’parsing ce petit morceau de JSON

{ "value" : 9223372036854775807 } 

c’est ce que je reçois

 { hello: 9223372036854776000 } 

Y at-il un moyen de l’parsingr correctement?

Pas avec JSON.parse intégré. Vous aurez besoin de l’parsingr manuellement et de traiter les valeurs comme des chaînes (si vous voulez effectuer un calcul arithmétique avec elles, il s’agit de bignumber.js ). Vous pouvez utiliser la bibliothèque Douglas Crockford JSON.js comme base pour votre parsingur.

EDIT: J’ai créé un paquet pour vous 🙂

 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.toSsortingng()); console.log('JSON.ssortingngify(JSON.parse(input)):', JSON.ssortingngify(r)); console.log('\n\nbig number JSON:'); var r1 = JSONbig.parse(json); console.log('JSON.parse(input).value : ', r1.value.toSsortingng()); console.log('JSON.ssortingngify(JSON.parse(input)):', JSONbig.ssortingngify(r1)); 

Sortie:

 Input: { "value" : 9223372036854775807, "v2": 123 } node.js bult-in JSON: JSON.parse(input).value : 9223372036854776000 JSON.ssortingngify(JSON.parse(input)): {"value":9223372036854776000,"v2":123} big number JSON: JSON.parse(input).value : 9223372036854775807 JSON.ssortingngify(JSON.parse(input)): {"value":9223372036854775807,"v2":123} 

vous pouvez utiliser ce code pour changer un grand nombre en chaîne et l’utiliser correctement

 let obj = '{ "value" : 9223372036854775807, "value1" : 100 }' let newObj = JSON.parse(obj.replace(/([0-9]{15,30}$\.{0,1}[0-9]{0,})/g, '"$1"')); console.log(newObj);