修复没有属性的对象转json字符串抛异常问题

This commit is contained in:
Looly 2023-04-12 00:11:03 +08:00
parent 89ccae81d1
commit 0d0dd1b9d2
3 changed files with 46 additions and 6 deletions

View File

@ -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)

View File

@ -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());
}
// 如果用户选择跳过异常则跳过此值转换
}
// 跳过空对象
}
/**

View File

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