diff --git a/index.js b/index.js index 5155574..0ab3a50 100644 --- a/index.js +++ b/index.js @@ -311,6 +311,13 @@ var json_parse = (function () { // Return the json_parse function. It will have access to all of the above // functions and variables. + function bigNumberToStringReviver(key, value) { + if (value && value instanceof BigNumber) { + return value.toString(); + } + return value; + } + return function (source, reviver) { var result; @@ -323,6 +330,10 @@ var json_parse = (function () { error("Syntax error"); } + if (reviver === true) { + reviver = bigNumberToStringReviver; + } + // If there is a reviver function, we recursively walk the new structure, // passing each name/value pair to the reviver function for possible // transformation, starting with a temporary root object that holds the result diff --git a/test.js b/test.js index 9de82f5..135debc 100644 --- a/test.js +++ b/test.js @@ -1,15 +1,23 @@ var JSONbig = require('./index.js'); 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()); +var r1 = JSONbig.parse(json); +var r2 = JSONbig.parse(json, true); + +console.log('\nnode.js bult-in JSON:'); +console.log('JSON.parse(input).value.toString(): ', r.value); 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)); +console.log('\nbig number JSON:'); +console.log('JSONbig.parse(input).value.toString(): ', r1.value.toString()); +console.log('JSONbig.stringify(JSONbig.parse(input)):', JSONbig.stringify(r1)); +console.log('JSON.stringify(JSONbig.parse(input)):', JSON.stringify(r1)); + +console.log('\nbig number JSON with default reviver:'); +console.log('JSONbig.parse(input, true).value.toString(): ', r2.value.toString()); +console.log('JSONbig.stringify(JSONbig.parse(input, true)):', JSONbig.stringify(r2)); +console.log('JSON.stringify(JSONbig.parse(input, true)):', JSON.stringify(r2));