diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e05022a8..95cf3cfc8 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### 🐞Bug修复 * 【core 】 修复MapUtil工具使用filter方法构造传入参数结果问题(issue#3162@Github) +* 【core 】 修复序列化和反序列化Class问题(issue#I7FQ29@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.20(2023-06-16) diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java index 394c60821..709f19a35 100755 --- a/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/ConverterRegistry.java @@ -3,6 +3,7 @@ package cn.hutool.core.convert; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.impl.*; import cn.hutool.core.date.DateTime; +import cn.hutool.core.lang.Console; import cn.hutool.core.lang.Opt; import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.TypeReference; @@ -319,6 +320,12 @@ public class ConverterRegistry implements Serializable { return (T) arrayConverter.convert(value, defaultValue); } + // issue#I7FQ29 Class + if("java.lang.Class".equals(rowType.getName())){ + final ClassConverter converter = new ClassConverter(); + return (T) converter.convert(value, (Class) defaultValue); + } + // 表示非需要特殊转换的对象 return null; } @@ -398,7 +405,6 @@ public class ConverterRegistry implements Serializable { defaultConverterMap.put(AtomicLongArray.class, new AtomicLongArrayConverter()); // 其它类型 - defaultConverterMap.put(Class.class, new ClassConverter()); defaultConverterMap.put(TimeZone.class, new TimeZoneConverter()); defaultConverterMap.put(Locale.class, new LocaleConverter()); defaultConverterMap.put(Charset.class, new CharsetConverter()); diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI7FQ29Test.java b/hutool-json/src/test/java/cn/hutool/json/IssueI7FQ29Test.java new file mode 100755 index 000000000..687ac85cd --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI7FQ29Test.java @@ -0,0 +1,31 @@ +/* + * 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. + */ + +package cn.hutool.json; + +import cn.hutool.core.lang.TypeReference; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Map; + +public class IssueI7FQ29Test { + @Test + public void toMapTest() { + final String jsonStr = "{\"trans_no\": \"java.lang.String\"}"; + final Map> map = JSONUtil.toBean(jsonStr, new TypeReference>>() { + }, false); + + Assert.assertNotNull(map); + Assert.assertEquals(String.class, map.get("trans_no")); + } +}