From e79369951d2f80621dda8a6638a6ba91805e4475 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 23 Oct 2020 22:56:38 +0800 Subject: [PATCH] update version --- CHANGELOG.md | 2 ++ .../cn/hutool/core/util/ClassLoaderUtil.java | 14 +++++++------- .../java/cn/hutool/core/util/ClassUtil.java | 2 +- hutool-db/pom.xml | 6 +++--- hutool-extra/pom.xml | 8 ++++---- .../main/java/cn/hutool/json/JSONGetter.java | 4 ++-- .../main/java/cn/hutool/json/JSONObject.java | 17 +++++++++++++++-- .../test/java/cn/hutool/json/JSONArrayTest.java | 6 ++++++ .../java/cn/hutool/json/JSONObjectTest.java | 6 ++++++ hutool-system/pom.xml | 2 +- pom.xml | 2 +- 11 files changed, 48 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4981072e..35c8a3b16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * 【core 】 ListUtil.page第一页页码使用PageUtil(pr#198@Gitee) * 【http 】 增加微信、企业微信ua识别(pr#1179@Github) * 【core 】 ObjectUtil增加defaultIfXXX(pr#199@Gitee) +* 【json 】 JSONObject构建时不支持的对象类型抛出异常 ### Bug修复 * 【core 】 修复ChineseDate没有忽略时分秒导致计算错误问题(issue#I1YW12@Gitee) @@ -19,6 +20,7 @@ * 【aop 】 修复SimpleAspect一个重载导致的问题,去掉重载的after方法(issue#I1YUG9@Gitee) * 【poi 】 修复03 sax读取日期问题(issue#I1Z83N@Gitee) * 【core 】 修复FileUtil.size软链导致的问题(pr#200@Gitee) +* 【core 】 修复JSONObject构造时传入JSONArray结果出错问题(issue#I22FDS@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ClassLoaderUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ClassLoaderUtil.java index dd821f44e..8222b1c02 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ClassLoaderUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ClassLoaderUtil.java @@ -1,5 +1,11 @@ package cn.hutool.core.util; +import cn.hutool.core.convert.BasicType; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.JarClassLoader; +import cn.hutool.core.lang.SimpleCache; + import java.io.File; import java.lang.reflect.Array; import java.util.ArrayList; @@ -7,12 +13,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import cn.hutool.core.convert.BasicType; -import cn.hutool.core.exceptions.UtilException; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.lang.JarClassLoader; -import cn.hutool.core.lang.SimpleCache; - /** * {@link ClassLoader}工具类 * @@ -71,7 +71,7 @@ public class ClassLoaderUtil { * *
 	 * 1、获取当前线程的ContextClassLoader
-	 * 2、获取{@link ClassLoaderUtil}类对应的ClassLoader
+	 * 2、获取当前类对应的ClassLoader
 	 * 3、获取系统ClassLoader({@link ClassLoader#getSystemClassLoader()})
 	 * 
* diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ClassUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ClassUtil.java index 7ef8108f3..2b190f58e 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ClassUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ClassUtil.java @@ -539,7 +539,7 @@ public class ClassUtil { * *
 	 * 1、获取当前线程的ContextClassLoader
-	 * 2、获取{@link ClassUtil}类对应的ClassLoader
+	 * 2、获取{@link ClassLoaderUtil}类对应的ClassLoader
 	 * 3、获取系统ClassLoader({@link ClassLoader#getSystemClassLoader()})
 	 * 
* diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml index 3781e1697..32122c714 100644 --- a/hutool-db/pom.xml +++ b/hutool-db/pom.xml @@ -21,7 +21,7 @@ 0.9.5.5 2.8.0 9.0.30 - 1.1.24 + 1.2.1 2.4.13 3.12.7 3.32.3.2 @@ -120,13 +120,13 @@ mysql mysql-connector-java - 8.0.21 + 8.0.22 test org.postgresql postgresql - 42.2.16.jre7 + 42.2.18.jre7 test diff --git a/hutool-extra/pom.xml b/hutool-extra/pom.xml index d07297970..236fb7f27 100644 --- a/hutool-extra/pom.xml +++ b/hutool-extra/pom.xml @@ -19,15 +19,15 @@ 2.2 - 3.2.1.RELEASE + 3.2.2.RELEASE 1.3.0 2.3.30 - 4.9.01 + 4.9.02 3.0.11.RELEASE 1.6.2 0.1.55 3.4.1 - 3.7 + 3.7.2 5.1.1 4.0.1 2.3.4.RELEASE @@ -193,7 +193,7 @@ org.apache.lucene lucene-analyzers-smartcn - 8.6.2 + 8.6.3 true diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java index e05c03d75..7269f54a7 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONGetter.java @@ -65,7 +65,7 @@ public interface JSONGetter extends OptNullBasicTypeFromObjectGetter { return null; } - if (object instanceof JSONArray) { + if (object instanceof JSON) { return (JSONArray) object; } return new JSONArray(object, getConfig()); @@ -84,7 +84,7 @@ public interface JSONGetter extends OptNullBasicTypeFromObjectGetter { return null; } - if (object instanceof JSONObject) { + if (object instanceof JSON) { return (JSONObject) object; } return new JSONObject(object, getConfig()); diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONObject.java b/hutool-json/src/main/java/cn/hutool/json/JSONObject.java index 3c6c15363..3ce391de4 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONObject.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONObject.java @@ -24,6 +24,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.util.Collection; import java.util.Enumeration; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.ResourceBundle; @@ -644,11 +645,19 @@ public class JSONObject implements JSON, JSONGetter, Map return; } + // 自定义序列化 final JSONSerializer serializer = GlobalSerializeMapping.getSerializer(source.getClass()); if (serializer instanceof JSONObjectSerializer) { - // 自定义序列化 serializer.serialize(this, source); - } else if (source instanceof Map) { + return; + } + + if(ArrayUtil.isArray(source) || source instanceof Iterable || source instanceof Iterator){ + // 不支持集合类型转换为JSONObject + throw new JSONException("Unsupported type [{}] to JSONObject!", source.getClass()); + } + + if (source instanceof Map) { // Map for (final Entry e : ((Map) source).entrySet()) { this.set(Convert.toStr(e.getKey()), e.getValue()); @@ -668,7 +677,11 @@ public class JSONObject implements JSON, JSONGetter, Map } else if (BeanUtil.isReadableBean(source.getClass())) { // 普通Bean this.populateMap(source); + } else { + // 不支持对象类型转换为JSONObject + throw new JSONException("Unsupported type [{}] to JSONObject!", source.getClass()); } + } /** diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java index f766bb2e3..6292d70c1 100644 --- a/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java @@ -25,6 +25,12 @@ import java.util.Map; */ public class JSONArrayTest { + @Test(expected = JSONException.class) + public void createJSONArrayTest(){ + // 集合类不支持转为JSONObject + new JSONArray(new JSONObject(), JSONConfig.create()); + } + @Test public void addTest() { // 方法1 diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java index 9f7e8422a..49f480054 100644 --- a/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java @@ -520,4 +520,10 @@ public class JSONObjectTest { final JSONObject jsonObject = JSONUtil.parseObj(next); Console.log(jsonObject); } + + @Test(expected = JSONException.class) + public void createJSONObjectTest(){ + // 集合类不支持转为JSONObject + new JSONObject(new JSONArray(), JSONConfig.create()); + } } diff --git a/hutool-system/pom.xml b/hutool-system/pom.xml index b78a89ffe..c7be22f7f 100644 --- a/hutool-system/pom.xml +++ b/hutool-system/pom.xml @@ -26,7 +26,7 @@ com.github.oshi oshi-core - 5.2.5 + 5.3.1 provided diff --git a/pom.xml b/pom.xml index 44246d40a..67a97977e 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ 8 4.13.1 - 1.18.12 + 1.18.16