diff --git a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java index 01c7db03..fb008930 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java +++ b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java @@ -533,6 +533,7 @@ public class JsonPath { */ @SuppressWarnings({"unchecked"}) public static T read(Object json, String jsonPath, Predicate... filters) { + if (String.valueOf(json).equals("{}") ) return null; return parse(json).read(jsonPath, filters); } diff --git a/json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue628.java b/json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue628.java new file mode 100644 index 00000000..61fa1d84 --- /dev/null +++ b/json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue628.java @@ -0,0 +1,41 @@ +package com.jayway.jsonpath.internal.function; + +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.Option; +import com.jayway.jsonpath.Predicate; +import org.junit.Test; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +import static org.junit.Assert.assertNull; + +public class Issue628 { + + @Test + public void testEmptyConfiguration() { + String document = "{}"; + Configuration config = Configuration.builder().options(Option.SUPPRESS_EXCEPTIONS).build(); + String nonExistentPath = "$.doesNotExist"; + + assertNull(JsonPath.read(config.jsonProvider().parse(document), nonExistentPath)); + } + + @Test + public void testReadingEmptyMapWithFilter(){ + Map doc = new HashMap(); + + Predicate customFilter = new Predicate() { + @Override + public boolean apply(PredicateContext ctx) { + return 1 == (Integer)ctx.item(); + } + }; + + List res = JsonPath.read(doc, "$.items[?]", customFilter); + + assertNull(res); + } +} \ No newline at end of file