Skip to content

Commit 2e6b43e

Browse files
authored
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
1 parent f0ff506 commit 2e6b43e

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java

+17-6
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ public Object createMap() {
9393
}
9494

9595
public Object unwrap(Object o) {
96-
9796
if (o == null) {
9897
return null;
9998
}
@@ -230,11 +229,23 @@ public int length(Object obj) {
230229
@Override
231230
public Iterable<?> toIterable(Object obj) {
232231
ArrayNode arr = toJsonArray(obj);
233-
List<Object> values = new ArrayList<Object>(arr.size());
234-
for (Object o : arr) {
235-
values.add(unwrap(o));
236-
}
237-
return values;
232+
Iterator<?> iterator = arr.iterator();
233+
return new Iterable<Object>() {
234+
@Override
235+
public Iterator<Object> iterator() {
236+
return new Iterator<Object>() {
237+
@Override
238+
public boolean hasNext() {
239+
return iterator.hasNext();
240+
}
241+
242+
@Override
243+
public Object next() {
244+
return unwrap(iterator.next());
245+
}
246+
};
247+
}
248+
};
238249
}
239250

240251
private JsonNode createJsonElement(Object o) {

0 commit comments

Comments
 (0)