diff --git a/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java b/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java index 45bbd8c8..c670cccc 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java +++ b/json-path/src/main/java/com/jayway/jsonpath/ReadContext.java @@ -107,6 +107,22 @@ public interface ReadContext { */ T read(String path, TypeRef typeRef); + /** + * Reads the given path from this context + * + * Sample code to create a TypeRef + * + * TypeRef ref = new TypeRef>() {}; + * + * + * @param path path to apply + * @param typeRef expected return type (will try to map) + * @param + * @param filters filters + * @return result + */ + T read(String path, TypeRef typeRef, Predicate... filters); + /** * Stops evaluation when maxResults limit has been reached * @param maxResults diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java b/json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java index 76985f78..1a94d27d 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java @@ -103,6 +103,11 @@ public class JsonContext implements DocumentContext { return convert(read(path), type, configuration); } + @Override + public T read(String path, TypeRef type, Predicate... filters) { + return convert(read(path, filters), type, configuration); + } + @Override public ReadContext limit(int maxResults) { return withListeners(new LimitingEvaluationListener(maxResults)); @@ -225,7 +230,7 @@ public class JsonContext implements DocumentContext { return jsonPath; } - private final static class LimitingEvaluationListener implements EvaluationListener { + private static final class LimitingEvaluationListener implements EvaluationListener { final int limit; private LimitingEvaluationListener(int limit) {