From 2e6b43e6889eca19a50c134166ecb062f08a5e40 Mon Sep 17 00:00:00 2001 From: Rishabh Date: Tue, 10 May 2022 19:20:25 +0530 Subject: [PATCH] Not creating an intermediate list for iterable (#791) * Not creating an intermediate list for iterable * Inlined new iterable class * Inlined new iterable class * Refactored code a bit --- .../spi/json/JacksonJsonNodeJsonProvider.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) 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 a20e7a2e..ae165927 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 @@ -93,7 +93,6 @@ public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider { } public Object unwrap(Object o) { - if (o == null) { return null; } @@ -230,11 +229,23 @@ public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider { @Override public Iterable toIterable(Object obj) { ArrayNode arr = toJsonArray(obj); - List values = new ArrayList(arr.size()); - for (Object o : arr) { - values.add(unwrap(o)); - } - return values; + Iterator iterator = arr.iterator(); + return new Iterable() { + @Override + public Iterator iterator() { + return new Iterator() { + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public Object next() { + return unwrap(iterator.next()); + } + }; + } + }; } private JsonNode createJsonElement(Object o) {