diff --git a/subprojects/json-lib-core/src/main/java/org/kordamp/json/JSONObject.java b/subprojects/json-lib-core/src/main/java/org/kordamp/json/JSONObject.java index 069b98db..50704809 100644 --- a/subprojects/json-lib-core/src/main/java/org/kordamp/json/JSONObject.java +++ b/subprojects/json-lib-core/src/main/java/org/kordamp/json/JSONObject.java @@ -656,7 +656,7 @@ public static JSONObject fromJSONTokener(JSONTokener tokener, JsonConfig jsonCon String key; Object value; - if (tokener.matches("null.*")) { + if (tokener.startsWith("null")) { fireObjectStartEvent(jsonConfig); fireObjectEndEvent(jsonConfig); return new JSONObject(true); diff --git a/subprojects/json-lib-core/src/main/java/org/kordamp/json/util/JSONTokener.java b/subprojects/json-lib-core/src/main/java/org/kordamp/json/util/JSONTokener.java index f7469311..f644c69a 100644 --- a/subprojects/json-lib-core/src/main/java/org/kordamp/json/util/JSONTokener.java +++ b/subprojects/json-lib-core/src/main/java/org/kordamp/json/util/JSONTokener.java @@ -114,6 +114,10 @@ public boolean matches(String pattern) { .matches(str); } + public boolean startsWith(String prefix) { + return this.mySource.startsWith(prefix, this.myIndex); + } + /** * Determine if the source string still contains characters that next() can * consume. diff --git a/subprojects/json-lib-core/src/test/java/org/kordamp/json/util/TestJSONTokener.java b/subprojects/json-lib-core/src/test/java/org/kordamp/json/util/TestJSONTokener.java index 7fe02faf..57bf4a61 100644 --- a/subprojects/json-lib-core/src/test/java/org/kordamp/json/util/TestJSONTokener.java +++ b/subprojects/json-lib-core/src/test/java/org/kordamp/json/util/TestJSONTokener.java @@ -75,6 +75,20 @@ public void testNextChar() { } } + public void testStartsWith() { + assertFalse(new JSONTokener("").startsWith("null")); + assertFalse(new JSONTokener("n").startsWith("null")); + assertFalse(new JSONTokener("nu").startsWith("null")); + assertFalse(new JSONTokener("nul").startsWith("null")); + assertTrue(new JSONTokener("null").startsWith("null")); + assertTrue(new JSONTokener("nulll").startsWith("null")); + assertFalse(new JSONTokener("nn").startsWith("null")); + assertFalse(new JSONTokener("nnu").startsWith("null")); + assertFalse(new JSONTokener("nnul").startsWith("null")); + assertFalse(new JSONTokener("nnull").startsWith("null")); + assertFalse(new JSONTokener("nnulll").startsWith("null")); + } + public void testReset() { JSONTokener tok = new JSONTokener("abc"); tok.next();