From 317d8ee527e02d9a7df462a64d05b908ff32f981 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 26 Mar 2023 06:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E7=94=A8=E6=88=B7=E9=80=89=E6=8B=A9ig?= =?UTF-8?q?noreError=E6=97=B6=EF=BC=8C=E9=94=99=E8=AF=AF=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E8=BD=ACJSON=E4=B9=9F=E5=BF=BD=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java | 7 +++++-- hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5869a38c..37bcbb525 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 StrUtil增加commonPrefix和commonSuffix方法(pr#3007@Github) * 【core 】 NumberUtil增加重载parseXXX方法, 解析失败返回默认值(pr#3007@Github) * 【core 】 FileUtil增加readLines重载,支持filter(pr#3006@Github) +* 【json 】 当用户选择ignoreError时,错误对象转JSON也忽略 ### 🐞Bug修复 * 【crypto】 修复NoSuchMethodError未捕获问题(issue#2966@Github) diff --git a/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java b/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java index 9261e837b..f44332caa 100755 --- a/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java +++ b/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java @@ -113,8 +113,11 @@ public class ObjectMapper { // TODO 过滤器对Bean无效,需补充。 mapFromBean(source, jsonObject); } else { - // 不支持对象类型转换为JSONObject - throw new JSONException("Unsupported type [{}] to JSONObject!", source.getClass()); + if(false == jsonObject.getConfig().isIgnoreError()){ + // 不支持对象类型转换为JSONObject + throw new JSONException("Unsupported type [{}] to JSONObject!", source.getClass()); + } + // 如果用户选择跳过异常,则跳过此值转换 } } diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java index d6ae6adf6..0816ff98d 100644 --- a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java @@ -45,7 +45,7 @@ public class JSONUtilTest { */ @Test public void parseNumberTest2() { - final JSONObject json = JSONUtil.parseObj(123L); + final JSONObject json = JSONUtil.parseObj(123L, JSONConfig.create().setIgnoreError(true)); Assert.assertEquals(new JSONObject(), json); }