This is an automated email from the ASF dual-hosted git repository. coheigea pushed a commit to branch coheigea/json-arrays in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 5bb5f6f9ebdc7e2df462d888a4f259dad12e49ed Author: Colm O hEigeartaigh <[email protected]> AuthorDate: Tue Jun 2 10:01:35 2026 +0100 Properly handle nested arrays in json parsing --- .../org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java | 4 ++++ .../apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java index f83e48ad3ad..aae774c3882 100644 --- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java +++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java @@ -285,6 +285,10 @@ public class JsonMapObjectReaderWriter { readJsonObjectAsSettable(nextMap, json.substring(i + 1, closingIndex), depth + 1); values.add(nextMap.map); i = closingIndex + 1; + } else if (json.charAt(i) == ARRAY_START) { + int closingIndex = getClosingIndex(json, ARRAY_START, ARRAY_END, i); + values.add(internalFromJsonAsList(name, json.substring(i + 1, closingIndex), depth + 1)); + i = closingIndex + 1; } else { int commaIndex = getCommaIndex(json, i); Object value = readPrimitiveValue(name, json, i, commaIndex); diff --git a/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java b/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java index 805f56b5c2f..124a9b1669a 100644 --- a/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java +++ b/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java @@ -382,6 +382,13 @@ public class JsonMapObjectReaderWriterTest { assertInvalidNumericLiteral("NaN"); } + @Test + public void testNestedArrayValueParsesSuccessfully() { + Map<String, Object> map = new JsonMapObjectReaderWriter().fromJson("{\"a\":[[]]}"); + assertEquals(1, map.size()); + assertEquals(Collections.singletonList(Collections.emptyList()), map.get("a")); + } + private void assertInvalidNumericLiteral(String value) { JsonMapObjectReaderWriter jsonMapObjectReaderWriter = new JsonMapObjectReaderWriter(); try {
