diff --git a/jsonpointer.js b/jsonpointer.js index 1006c04..dad907d 100644 --- a/jsonpointer.js +++ b/jsonpointer.js @@ -72,8 +72,7 @@ function get (obj, pointer) { for (var p = 1; p < len;) { obj = obj[untilde(pointer[p++])] if (len === p) return obj - if (typeof obj !== 'object') return undefined - if (obj === null) return null + if (typeof obj !== 'object' || obj === null) return undefined } } diff --git a/test.js b/test.js index 712ab90..e7b5d5a 100644 --- a/test.js +++ b/test.js @@ -12,8 +12,8 @@ var obj = { nullValue: null } -assert.equal(jsonpointer.get(obj, '/nullValue'), null) -assert.equal(jsonpointer.get(obj, '/nullValue/e'), null) +assert.strictEqual(jsonpointer.get(obj, '/nullValue'), null) +assert.strictEqual(jsonpointer.get(obj, '/nullValue/e'), undefined) // set returns old value assert.strictEqual(jsonpointer.set(obj, '/a', 2), 1) @@ -119,18 +119,16 @@ assert.strictEqual(jsonpointer.get(example, '/ '), 7) assert.strictEqual(jsonpointer.get(example, '/m~0n'), 8) // jsonpointer.compile(path) -var a = { foo: 'bar' } +var a = { foo: 'bar', foo2: null } var pointer = jsonpointer.compile('/foo') assert.strictEqual(pointer.get(a), 'bar') assert.strictEqual(pointer.set(a, 'test'), 'bar') assert.strictEqual(pointer.get(a), 'test') -assert.deepEqual(a, { foo: 'test' }) +assert.deepEqual(a, { foo: 'test', foo2: null }) - -// compile read null value -var compileWithNullValue = { foo: 'bar' } +// Read subproperty of null value var pointerNullValue = jsonpointer.compile('/foo2/baz') -assert.equal(pointer.get(pointerNullValue), null) +assert.strictEqual(pointerNullValue.get(a), undefined) var b = {} jsonpointer.set({}, '/constructor/prototype/boo', 'polluted')