diff --git a/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java b/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java index 719745c2736..42368a9218d 100644 --- a/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java +++ b/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import java.util.stream.IntStream; import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.TypeUtil; @@ -84,7 +85,7 @@ public class JSON private final Map _convertors = new ConcurrentHashMap<>(); private int _stringBufferSize = 1024; - private Function, Object> _arrayConverter = List::toArray; + private Function, Object> _arrayConverter = this::defaultArrayConverter; /** * @return the initial stringBuffer size to use when creating JSON strings @@ -937,6 +938,14 @@ public class JSON return map; } + private Object defaultArrayConverter(List list) + { + // Call newArray() to keep backward compatibility. + Object[] objects = newArray(list.size()); + IntStream.range(0, list.size()).forEach(i -> objects[i] = list.get(i)); + return objects; + } + protected Object parseArray(Source source) { if (source.next() != '[')