diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONParser.java b/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONParser.java index 75a5c6bcb..6db46abde 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONParser.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONParser.java @@ -101,7 +101,9 @@ public class JSONParser { * @return JSON值 */ public JSON parse() { - return nextJSON(tokener.nextClean()); + final JSON json = nextJSON(tokener.nextClean()); + tokener.checkEnd(); + return json; } /** @@ -183,15 +185,14 @@ public class JSONParser { tokener.nextColon(); // 过滤并设置键值对 - JSON value = parse(); + final JSON value = nextJSON(tokener.nextClean()); // 添加前置过滤,通过MutablePair实现过滤、修改键值对等 if (null != predicate) { final MutableEntry entry = new MutableEntry<>(key, value); if (predicate.test(entry)) { // 使用修改后的键值对 key = (String) entry.getKey(); - value = (JSON) entry.getValue(); - jsonObject.set(key, value); + jsonObject.set(key, entry.getValue()); } }else { jsonObject.set(key, value); diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONTokener.java b/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONTokener.java index 26f419a67..53d513e47 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONTokener.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/reader/JSONTokener.java @@ -134,7 +134,7 @@ public class JSONTokener extends ReaderWrapper { */ public void checkEnd(){ if(EOF != nextClean()){ - throw syntaxError("Unread data"); + throw syntaxError("Invalid JSON, Unread data after end."); } }