diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/ScanPathToken.java b/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/ScanPathToken.java index b785456e..3747c046 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/ScanPathToken.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/compiler/ScanPathToken.java @@ -197,8 +197,11 @@ public class ScanPathToken extends PathToken { @Override public boolean matches(Object model) { - Collection keys = ctx.jsonProvider().getPropertyKeys(model); - return keys.containsAll(propertyPathToken.getProperties()); + if(ctx.jsonProvider().isMap(model)){ + Collection keys = ctx.jsonProvider().getPropertyKeys(model); + return keys.containsAll(propertyPathToken.getProperties()); + } + return false; } } } diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/AbstractJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/AbstractJsonProvider.java index 7204c6e2..c64d83c9 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/AbstractJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/AbstractJsonProvider.java @@ -150,20 +150,15 @@ public abstract class AbstractJsonProvider implements JsonProvider { } /** - * Returns the keys from the given object or the indexes from an array + * Returns the keys from the given object * - * @param obj an array or an object - * @return the keys for an object or the indexes for an array + * @param obj an object + * @return the keys for an object */ @SuppressWarnings("unchecked") public Collection getPropertyKeys(Object obj) { if (isArray(obj)) { - List l = (List) obj; - List keys = new ArrayList(l.size()); - for (int i = 0; i < l.size(); i++) { - keys.add(String.valueOf(i)); - } - return keys; + throw new UnsupportedOperationException(); } else { return ((Map) obj).keySet(); } diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java index bf65e05d..952ce2c2 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java @@ -78,10 +78,10 @@ public interface JsonProvider { /** - * Returns the keys from the given object or the indexes from an array + * Returns the keys from the given object * - * @param obj an array or an object - * @return the keys for an object or the indexes for an array + * @param obj an object + * @return the keys for an object */ Collection getPropertyKeys(Object obj);