From 923cf3d2655b5e4bd1d92c58bfa8031a97cbcd0c Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 6 Mar 2024 17:20:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DJSONUtil=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=92=8C=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E9=A2=84?= =?UTF-8?q?=E6=9C=9F=E7=9A=84=E7=BB=93=E6=9E=9C=E4=B8=8D=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../main/java/cn/hutool/core/convert/ConverterRegistry.java | 2 +- hutool-json/src/main/java/cn/hutool/json/JSONUtil.java | 1 + hutool-json/src/test/java/cn/hutool/json/Issue3504Test.java | 6 ++++-- hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java | 6 ++++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 244faf230..080b4b39f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.27(2024-03-05) +# 5.8.27(2024-03-06) ### 🐣新特性 * 【extra 】 FreemarkerEngine修改默认版本参数 @@ -11,6 +11,7 @@ ### 🐞Bug修复 * 【core 】 修复PathMover对目标已存在且只读文件报错错误问题(issue#I95CLT@Gitee) +* 【json 】 修复JSONUtil序列化和反序列化预期的结果不一致问题(pr#3507@Github) ------------------------------------------------------------------------------------------------------------- # 5.8.26(2024-02-10) 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 8f3ebb68c..4cfeca0ce 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 @@ -153,7 +153,7 @@ public class ConverterRegistry implements Serializable { */ @SuppressWarnings("unchecked") public Converter getDefaultConverter(Type type) { - Class key = TypeUtil.getClass(type); + final Class key = TypeUtil.getClass(type); return (null == defaultConverterMap || null == key) ? null : (Converter) defaultConverterMap.get(key); } diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java b/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java index baf0e65f6..e864dc011 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java @@ -796,6 +796,7 @@ public class JSONUtil { return object.toString(); } + // pr#3507 // Class类型保存类名 if (object instanceof Class) { return ((Class) object).getName(); diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue3504Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue3504Test.java index 577dbe6da..ca7b78de2 100644 --- a/hutool-json/src/test/java/cn/hutool/json/Issue3504Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue3504Test.java @@ -1,6 +1,7 @@ package cn.hutool.json; import lombok.Data; +import org.junit.Assert; import org.junit.Test; /** @@ -14,8 +15,9 @@ public class Issue3504Test { jsonBean.setName("test"); jsonBean.setClasses(new Class[]{String.class}); String huToolJsonStr = JSONUtil.toJsonStr(jsonBean); - System.out.println("hutool json str-------" + huToolJsonStr); - System.out.println(JSONUtil.toBean(huToolJsonStr, JsonBean.class)); + final JsonBean bean = JSONUtil.toBean(huToolJsonStr, JsonBean.class); + Assert.assertNotNull(bean); + Assert.assertEquals("test", bean.getName()); } @Data diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java index 70f128d3c..d854d5685 100644 --- a/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java @@ -1,6 +1,7 @@ package cn.hutool.json; import lombok.Data; +import org.junit.Assert; import org.junit.Test; /** @@ -13,8 +14,9 @@ public class Issue3506Test { Languages languages = new Languages(); languages.setLanguageType(Java.class); String hutoolJSONString = JSONUtil.toJsonStr(languages); - System.out.println(hutoolJSONString); - System.out.println(JSONUtil.toBean(hutoolJSONString, Languages.class)); + final Languages bean = JSONUtil.toBean(hutoolJSONString, Languages.class); + Assert.assertNotNull(bean); + Assert.assertEquals(bean.getLanguageType(), Java.class); } @Data