From 16967f322ee65c301b48fa79bb681e38896fd212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89amonn=20McManus?= Date: Wed, 27 Sep 2023 12:42:04 -0700 Subject: [PATCH] Simplify the check for object keys that are themselves objects. For object keys, we can just skip the part of `nextValue()` that parses values that are objects or arrays. Then the existing logic for unquoted values will already stop at `{` or `[`, and that will produce a `Missing value` exception. --- src/main/java/org/json/JSONTokener.java | 4 ---- src/test/java/org/json/junit/JSONObjectTest.java | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/json/JSONTokener.java b/src/main/java/org/json/JSONTokener.java index 4a7122f..4a83a69 100644 --- a/src/main/java/org/json/JSONTokener.java +++ b/src/main/java/org/json/JSONTokener.java @@ -428,10 +428,6 @@ public class JSONTokener { case '"': case '\'': return this.nextString(c); - case '{': - throw syntaxError("Nested object not expected here."); - case '[': - throw syntaxError("Nested array not expected here."); } /* diff --git a/src/test/java/org/json/junit/JSONObjectTest.java b/src/test/java/org/json/junit/JSONObjectTest.java index 23feda9..88115c8 100644 --- a/src/test/java/org/json/junit/JSONObjectTest.java +++ b/src/test/java/org/json/junit/JSONObjectTest.java @@ -2230,7 +2230,7 @@ public class JSONObjectTest { assertNull("Expected an exception",new JSONObject(str)); } catch (JSONException e) { assertEquals("Expecting an exception message", - "Nested object not expected here. at 2 [character 3 line 1]", + "Missing value at 1 [character 2 line 1]", e.getMessage()); } try { @@ -2239,7 +2239,7 @@ public class JSONObjectTest { assertNull("Expected an exception",new JSONObject(str)); } catch (JSONException e) { assertEquals("Expecting an exception message", - "Nested array not expected here. at 10 [character 11 line 1]", + "Missing value at 9 [character 10 line 1]", e.getMessage()); } try {