Skip to content

Commit 99a7865

Browse files
committed
Merge pull request #9 from hildjj/master
Return null when value not found
2 parents f1b7967 + ea7d1ce commit 99a7865

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ This is an implementation of [JSON Pointer](http://tools.ietf.org/html/draft-iet
1111
var three = jsonpointer.get(obj, "/qux/0");
1212
var four = jsonpointer.get(obj, "/qux/1");
1313
var five = jsonpointer.get(obj, "/qux/2");
14+
var notfound = jsonpointer.get(obj, "/quo"); // returns null
1415

1516
jsonpointer.set(obj, "/foo", 6); // obj.foo = 6;
1617

jsonpointer.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ var untilde = function(str) {
1515
var traverse = function(obj, pointer, value) {
1616
// assert(isArray(pointer))
1717
var part = untilde(pointer.shift());
18-
if(typeof obj[part] === "undefined") {
19-
throw("Value for pointer '" + pointer + "' not found.");
20-
return;
18+
if(!obj.hasOwnProperty(part)) {
19+
return null;
2120
}
2221
if(pointer.length !== 0) { // keep traversin!
2322
return traverse(obj[part], pointer, value);

test.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 6);
3333

3434
assert.equal(jsonpointer.get(obj, ""), obj);
3535
assert.throws(function() {
36-
assert.equal(jsonpointer.get(obj, "a"), 3);
36+
jsonpointer.get(obj, "a");
37+
});
38+
assert.throws(function() {
39+
jsonpointer.get(obj, "a/");
3740
});
3841

3942
var complexKeys = {
@@ -51,19 +54,13 @@ assert.equal(jsonpointer.get(complexKeys, "/a~1b/c"), 1);
5154
assert.equal(jsonpointer.get(complexKeys, "/d/e~1f"), 2);
5255
assert.equal(jsonpointer.get(complexKeys, "/~01"), 3);
5356
assert.equal(jsonpointer.get(complexKeys, "/01"), 4);
54-
assert.throws(function() {
55-
assert.equal(jsonpointer.get(complexKeys, "/a/b/c"), 1);
56-
});
57-
assert.throws(function() {
58-
assert.equal(jsonpointer.get(complexKeys, "/~1"), 3);
59-
});
57+
assert.equal(jsonpointer.get(complexKeys, "/a/b/c"), null);
58+
assert.equal(jsonpointer.get(complexKeys, "/~1"), null);
6059

6160
// draft-ietf-appsawg-json-pointer-08 has special array rules
6261
var ary = [ "zero", "one", "two" ];
62+
assert.equal(jsonpointer.get(ary, "/01"), null);
6363

64-
assert.throws(function() {
65-
assert.equal(jsonpointer.get(ary, "/01"), "one");
66-
});
6764
//assert.equal(jsonpointer.set(ary, "/-", "three"), null);
6865
//assert.equal(ary[3], "three");
6966

0 commit comments

Comments
 (0)