From f2b347dc9dfb0c8d3cb0f811f612fe71db9c259c Mon Sep 17 00:00:00 2001 From: misakacoder <210086826@qq.com> Date: Tue, 5 Mar 2024 13:14:02 +0800 Subject: [PATCH] fix 3506 --- .../main/java/cn/hutool/json/JSONUtil.java | 5 ++++ .../java/cn/hutool/json/Issue3506Test.java | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java 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 80d56f111..baf0e65f6 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,11 @@ public class JSONUtil { return object.toString(); } + // Class类型保存类名 + if (object instanceof Class) { + return ((Class) object).getName(); + } + // Java内部类不做转换 if (ClassUtil.isJdkClass(object.getClass())) { return object.toString(); diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java new file mode 100644 index 000000000..70f128d3c --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/Issue3506Test.java @@ -0,0 +1,30 @@ +package cn.hutool.json; + +import lombok.Data; +import org.junit.Test; + +/** + * https://github.com/dromara/hutool/issues/3506 + */ +public class Issue3506Test { + + @Test + public void test3506() { + 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)); + } + + @Data + public static class Languages { + private Class languageType; + } + + public interface Language { + } + + public static class Java implements Language { + } +}