diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java index 0a7d7275..fa1eda89 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java @@ -163,17 +163,17 @@ public abstract class AbstractJsonProvider implements JsonProvider { } /** - * Converts given object to an {@link Iterable} + * Converts given array to an {@link Iterable} * - * @param obj an array or an object - * @return the entries for an array or the values for a map + * @param obj an array + * @return an Iterable that iterates over the entries of an array */ @SuppressWarnings("unchecked") public Iterable toIterable(Object obj) { if (isArray(obj)) return ((Iterable) obj); else - return ((Map) obj).values(); + throw new JsonPathException("Cannot iterate over " + obj!=null?obj.getClass().getName():"null"); } @Override diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java index 95bf35b5..37bc006e 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java @@ -219,21 +219,12 @@ public class GsonJsonProvider extends AbstractJsonProvider { @Override public Iterable toIterable(Object obj) { - if (isArray(obj)) { - JsonArray arr = toJsonArray(obj); - List values = new ArrayList(arr.size()); - for (Object o : arr) { - values.add(unwrap(o)); - } - return values; - } else { - JsonObject jsonObject = toJsonObject(obj); - List values = new ArrayList(); - for (Map.Entry entry : jsonObject.entrySet()) { - values.add(unwrap(entry.getValue())); - } - return values; + JsonArray arr = toJsonArray(obj); + List values = new ArrayList(arr.size()); + for (Object o : arr) { + values.add(unwrap(o)); } + return values; } private JsonElement createJsonElement(Object o) { diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java index 8ef4cd18..0ad06527 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java @@ -217,21 +217,12 @@ public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider { @Override public Iterable toIterable(Object obj) { - if (isArray(obj)) { - ArrayNode arr = toJsonArray(obj); - List values = new ArrayList(arr.size()); - for (Object o : arr) { - values.add(unwrap(o)); - } - return values; - } else { - List values = new ArrayList(); - Iterator iter = toJsonObject(obj).elements(); - while (iter.hasNext()){ - values.add(unwrap(iter.next())); - } - return values; + ArrayNode arr = toJsonArray(obj); + List values = new ArrayList(arr.size()); + for (Object o : arr) { + values.add(unwrap(o)); } + return values; } private JsonNode createJsonElement(Object o) { 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 3432a416..4dc7b10c 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 @@ -76,10 +76,10 @@ public interface JsonProvider { int length(Object obj); /** - * Converts given object to an {@link Iterable} + * Converts given array to an {@link Iterable} * - * @param obj an array or an object - * @return the entries for an array or the values for a map + * @param obj an array + * @return an Iterable that iterates over the entries of an array */ Iterable toIterable(Object obj);