From 0d0dd1b9d27f462c95ff1378da29c1ff67f1b05c Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 12 Apr 2023 00:11:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B2=A1=E6=9C=89=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E7=9A=84=E5=AF=B9=E8=B1=A1=E8=BD=ACjson=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=8A=9B=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../java/cn/hutool/json/ObjectMapper.java | 8 +--- hutool-json/src/test/java/Issue3051Test.java | 43 +++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 hutool-json/src/test/java/Issue3051Test.java diff --git a/CHANGELOG.md b/CHANGELOG.md index a68452a8b..a3bf7dd9e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ * 【core 】 修复SafeConcurrentHashMap.computeIfAbsent可能存在的结果为null的情况(issue#I6RVMY@Gitee) * 【json 】 修复Pair反序列化报错问题(issue#I6SZYB@Gitee) * 【core 】 修复使用AnnotationUtil.getAnnotationAlias获取注解时可能会出现空指针的问题(pr#975@Gitee) +* 【json 】 修复没有属性的对象转json字符串抛异常问题(issue#3051@Github) ------------------------------------------------------------------------------------------------------------- # 5.8.16 (2023-03-26) 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 7248203ec..32c8b035f 100755 --- a/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java +++ b/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java @@ -112,13 +112,9 @@ public class ObjectMapper { // 普通Bean // TODO 过滤器对Bean无效,需补充。 mapFromBean(source, jsonObject); - } else { - if(false == jsonObject.getConfig().isIgnoreError()){ - // 不支持对象类型转换为JSONObject - throw new JSONException("Unsupported type [{}] to JSONObject!", source.getClass()); - } - // 如果用户选择跳过异常,则跳过此值转换 } + + // 跳过空对象 } /** diff --git a/hutool-json/src/test/java/Issue3051Test.java b/hutool-json/src/test/java/Issue3051Test.java new file mode 100644 index 000000000..f37430128 --- /dev/null +++ b/hutool-json/src/test/java/Issue3051Test.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +import cn.hutool.json.JSONConfig; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.Data; +import org.junit.Assert; +import org.junit.Test; + +/** + * https://github.com/dromara/hutool/issues/3051 + */ +public class Issue3051Test { + @Test + public void parseTest() { + final JSONObject jsonObject = JSONUtil.parseObj(new EmptyBean(), + JSONConfig.create().setIgnoreError(true)); + + Assert.assertEquals("{}", jsonObject.toString()); + } + + @Test + public void parseTest2() { + final JSONObject jsonObject = JSONUtil.parseObj(new EmptyBean()); + + Assert.assertEquals("{}", jsonObject.toString()); + } + + @Data + static class EmptyBean { + + } +}