From be98b46349c6649195e01b5ca39f281016d9f4e6 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 29 Sep 2024 13:22:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DignoreNullValue=E5=9C=A8JSONA?= =?UTF-8?q?rray=E4=B8=AD=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../src/main/java/cn/hutool/json/JSONArray.java | 7 +++++++ .../test/java/cn/hutool/json/Issue3759Test.java | 14 ++++++++++++++ .../java/{ => cn/hutool/json}/IssueIAP4GMTest.java | 4 ++-- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 hutool-json/src/test/java/cn/hutool/json/Issue3759Test.java rename hutool-json/src/test/java/{ => cn/hutool/json}/IssueIAP4GMTest.java (81%) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc7a17fca..e157354ee 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.33(2024-09-23) +# 5.8.33(2024-09-29) ### 🐣新特性 * 【core 】 SyncFinisher增加setExecutorService方法(issue#IANKQ1@Gitee) @@ -21,6 +21,7 @@ * 【http 】 修复重定向没有按照RFC7231规范跳转的问题,修改为除了307外重定向使用GET方式(issue#3722@Github) * 【core 】 修复ArrayUtil.lastIndexOfSub死循环问题(issue#IAQ16E@Gitee) * 【core 】 修复ImgUtil.write写出临时文件未清理问题(issue#IAPZG7@Gitee) +* 【json 】 修复ignoreNullValue在JSONArray中无效问题(issue#3759@Github) ------------------------------------------------------------------------------------------------------------- **# 5.8.32(2024-08-30) diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java index f567b043d..1ee8183ee 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java @@ -594,6 +594,13 @@ public class JSONArray implements JSON, JSONGetter, List, Rando return false; } } + + // issue#3759 + final boolean ignoreNullValue = this.config.isIgnoreNullValue(); + if (ObjectUtil.isNull(obj) && ignoreNullValue) { + return false; + } + return this.rawList.add(obj); } } diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue3759Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue3759Test.java new file mode 100644 index 000000000..152ecc53a --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/Issue3759Test.java @@ -0,0 +1,14 @@ +package cn.hutool.json; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class Issue3759Test { + @Test + void parseTest() { + String jsonArrayStr = "[null]"; + final JSONArray objects = JSONUtil.parseArray(jsonArrayStr, + JSONConfig.create().setIgnoreNullValue(true)); + Assertions.assertTrue(objects.isEmpty()); + } +} diff --git a/hutool-json/src/test/java/IssueIAP4GMTest.java b/hutool-json/src/test/java/cn/hutool/json/IssueIAP4GMTest.java similarity index 81% rename from hutool-json/src/test/java/IssueIAP4GMTest.java rename to hutool-json/src/test/java/cn/hutool/json/IssueIAP4GMTest.java index 69a6e6af9..c960b2b56 100644 --- a/hutool-json/src/test/java/IssueIAP4GMTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/IssueIAP4GMTest.java @@ -1,5 +1,5 @@ -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; +package cn.hutool.json; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;