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 { + + } +}