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