diff --git a/lib/parse.js b/lib/parse.js index 4499e9a..3798d69 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -245,7 +245,7 @@ module.exports = function (source, reviver) { var v; var val = holder[key]; if (val && typeof val === 'object') { - for (k in value) { + for (k in val) { if (Object.prototype.hasOwnProperty.call(val, k)) { v = walk(val, k); if (typeof v === 'undefined') { diff --git a/test/parse.js b/test/parse.js index 948841c..4b2192e 100644 --- a/test/parse.js +++ b/test/parse.js @@ -18,3 +18,21 @@ test('parse', function (t) { t.end(); }); + +test('parse with reviver', function (t) { + var data = '{"a": {"b": 2}}'; + var calls = []; + + json.parse(data, function reviver(key, value) { + calls[calls.length] = key; + return value; + }); + + t.deepEqual( + calls.sort(), + ['', 'a', 'b'].sort(), + 'reviver is called for all nested properties' + ); + + t.end(); +});