From ae854cc0409116b09cd18e7e4d668ee6d51075fe Mon Sep 17 00:00:00 2001 From: JFronny Date: Sat, 20 Apr 2024 16:39:18 +0200 Subject: [PATCH] fix(serialize-json): allow singular name at document root --- .../gitlab/jfronny/commons/serialize/json/JsonReader.java | 5 ++++- .../gitlab/jfronny/commons/serialize/json/JsonWriter.java | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonReader.java b/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonReader.java index 6cb67b5..53fa2b0 100644 --- a/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonReader.java +++ b/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonReader.java @@ -574,7 +574,10 @@ public class JsonReader extends SerializeReader impleme default -> { // If we are in an array, allow reading an in inferred name once if (!wroteName) { - if (stack[stackSize - 1] == JsonScope.EMPTY_ARRAY || stack[stackSize - 1] == JsonScope.NONEMPTY_ARRAY) { + if (stack[stackSize - 1] == JsonScope.EMPTY_ARRAY + || stack[stackSize - 1] == JsonScope.NONEMPTY_ARRAY + || stack[stackSize - 1] == JsonScope.EMPTY_DOCUMENT + || stack[stackSize - 1] == JsonScope.NONEMPTY_DOCUMENT) { wroteName = true; return heuristics.guessArrayElementName(getPath()); } diff --git a/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonWriter.java b/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonWriter.java index 32496c0..fc2199f 100644 --- a/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonWriter.java +++ b/commons-serialize-json/src/main/java/io/gitlab/jfronny/commons/serialize/json/JsonWriter.java @@ -209,7 +209,9 @@ public class JsonWriter extends SerializeWriter impleme int context = peek(); if (context != EMPTY_OBJECT && context != NONEMPTY_OBJECT) { if (lenient) { - if (context != EMPTY_ARRAY && context != NONEMPTY_ARRAY) throw new IllegalStateException("Please begin an object or array before writing a name."); + if (context != EMPTY_ARRAY && context != NONEMPTY_ARRAY + && context != EMPTY_DOCUMENT && context != NONEMPTY_DOCUMENT) + throw new IllegalStateException("Please begin an object or array before writing a name."); } else { throw new IllegalStateException("Please begin an object before writing a name."); } @@ -221,7 +223,8 @@ public class JsonWriter extends SerializeWriter impleme private void writeDeferredName() throws IOException { if (deferredName != null) { int context = peek(); - if (context == EMPTY_ARRAY || context == NONEMPTY_ARRAY) { + if (context == EMPTY_ARRAY || context == NONEMPTY_ARRAY + || context == EMPTY_DOCUMENT || context == NONEMPTY_DOCUMENT) { if (commentUnexpectedNames) { // Write the name as a comment instead of literally comment(deferredName);