diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java index 7dbda68c..1cd04748 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java @@ -38,7 +38,7 @@ public class FieldFilter extends PathTokenFilter { public Object filter(Object obj, JsonProvider jsonProvider, LinkedList filters, boolean inArrayContext) { if (jsonProvider.isList(obj)) { if (!inArrayContext) { - return null; + throw new InvalidPathException("Trying to access field on array"); } else { List result = jsonProvider.createList(); for (Object current : jsonProvider.toList(obj)) { diff --git a/json-path/src/test/java/com/jayway/jsonpath/IssuesTest.java b/json-path/src/test/java/com/jayway/jsonpath/IssuesTest.java index 9890acde..8465c348 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/IssuesTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/IssuesTest.java @@ -15,18 +15,6 @@ import static junit.framework.Assert.assertTrue; * Time: 8:42 AM */ public class IssuesTest { - @Test - public void issue_7() throws Exception { - - String json = "{ \"foo\" : [\n" + - " { \"id\": 1 }, \n" + - " { \"id\": 2 }, \n" + - " { \"id\": 3 }\n" + - " ] }"; - - - assertNull(JsonPath.read(json, "$.foo.id")); - } @Test public void issue_11() throws Exception { diff --git a/json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java b/json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java index f811880a..b9d83dee 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java @@ -9,9 +9,7 @@ import java.util.HashMap; import java.util.Map; import static java.util.Arrays.asList; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.*; /** * Created by IntelliJ IDEA. @@ -106,6 +104,24 @@ public class JsonModelTest { JsonModel.model(DOCUMENT).get("store.invalid"); } + @Test + public void query_for_null_property_returns_null() { + String documentWithNull = + "{ \"store\": {\n" + + " \"book\": { \n" + + " \"color\": null\n" + + " }\n" + + " }\n" + + "}"; + + Object color = JsonModel.model(documentWithNull).get("store.book.color"); + + assertNull(color); + } + @Test(expected = InvalidPathException.class) + public void query_for_property_on_array_throws() throws Exception { + JsonModel.model(DOCUMENT).get("store.book.color"); + } }