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 4ba322331..c17acd639 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 @@ -243,7 +243,7 @@ public class ConverterRegistry implements Serializable { } // 无法转换 - throw new ConvertException("Can not Converter from [{}] to [{}]", value.getClass().getName(), type.getTypeName()); + throw new ConvertException("Can not convert from {}: [{}] to [{}]", value.getClass().getName(), value, type.getTypeName()); } /** diff --git a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java index 9978ac9fd..7c326e38e 100755 --- a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java +++ b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java @@ -201,7 +201,7 @@ public final class InternalJSONUtil { static Map createRawMap(final int capacity, JSONConfig config) { final Map rawHashMap; if (null == config) { - config = JSONConfig.create(); + config = JSONConfig.of(); } final Comparator keyComparator = config.getKeyComparator(); if (config.isIgnoreCase()) { diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java index 8f19bf523..30c01f3e4 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java @@ -2,6 +2,8 @@ package cn.hutool.json; import cn.hutool.core.bean.BeanPath; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.convert.impl.ArrayConverter; import cn.hutool.core.lang.func.Filter; import cn.hutool.core.lang.mutable.Mutable; import cn.hutool.core.lang.mutable.MutableObj; @@ -66,7 +68,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @since 3.2.2 */ public JSONArray(final int initialCapacity) { - this(initialCapacity, JSONConfig.create()); + this(initialCapacity, JSONConfig.of()); } /** @@ -90,7 +92,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando */ public JSONArray(final int initialCapacity, final JSONConfig config) { this.rawList = new ArrayList<>(initialCapacity); - this.config = ObjUtil.defaultIfNull(config, JSONConfig::create); + this.config = ObjUtil.defaultIfNull(config, JSONConfig::of); } /** @@ -107,7 +109,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @throws JSONException 非数组或集合 */ public JSONArray(final Object object) throws JSONException { - this(object, JSONConfig.create()); + this(object, JSONConfig.of()); } /** @@ -332,7 +334,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando @Override @SuppressWarnings({"unchecked"}) public T[] toArray(final T[] a) { - return (T[]) JSONConverter.toArray(this, a.getClass().getComponentType()); + return (T[]) ArrayConverter.INSTANCE.convert(a.getClass().getComponentType(), this); } @Override @@ -481,7 +483,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @return 实体类对象 */ public Object toArray(final Class arrayClass) { - return JSONConverter.toArray(this, arrayClass); + return ArrayConverter.INSTANCE.convert(arrayClass, this); } /** @@ -493,7 +495,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @since 3.0.8 */ public List toList(final Class elementType) { - return JSONConverter.toList(this, elementType); + return Convert.toList(elementType, this); } /** diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONConfig.java b/hutool-json/src/main/java/cn/hutool/json/JSONConfig.java index dfc7d826d..811b63347 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONConfig.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONConfig.java @@ -49,7 +49,7 @@ public class JSONConfig implements Serializable { * * @return JSONConfig */ - public static JSONConfig create() { + public static JSONConfig of() { return new JSONConfig(); } diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONConverter.java b/hutool-json/src/main/java/cn/hutool/json/JSONConverter.java index 4efb2a8e6..d2f06827b 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONConverter.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONConverter.java @@ -6,7 +6,6 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.ConvertException; import cn.hutool.core.convert.Converter; import cn.hutool.core.convert.ConverterRegistry; -import cn.hutool.core.convert.impl.ArrayConverter; import cn.hutool.core.convert.impl.BeanConverter; import cn.hutool.core.reflect.ConstructorUtil; import cn.hutool.core.reflect.TypeUtil; @@ -16,7 +15,6 @@ import cn.hutool.json.serialize.GlobalSerializeMapping; import cn.hutool.json.serialize.JSONDeserializer; import java.lang.reflect.Type; -import java.util.List; /** * JSON转换器 @@ -41,29 +39,6 @@ public class JSONConverter implements Converter { return JSONUtil.parse(value); } - /** - * JSONArray转数组 - * - * @param jsonArray JSONArray - * @param arrayClass 数组元素类型 - * @return 数组对象 - */ - protected static Object toArray(final JSONArray jsonArray, final Class arrayClass) { - return ArrayConverter.INSTANCE.convert(arrayClass, jsonArray, null); - } - - /** - * 将JSONArray转换为指定类型的对量列表 - * - * @param 元素类型 - * @param jsonArray JSONArray - * @param elementType 对象元素类型 - * @return 对象列表 - */ - protected static List toList(final JSONArray jsonArray, final Class elementType) { - return Convert.toList(elementType, jsonArray); - } - /** * JSON递归转换
* 首先尝试JDK类型转换,如果失败尝试JSON转Bean
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 c4521d0c7..7d9388bcf 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONObject.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONObject.java @@ -46,7 +46,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * 构造,初始容量为 {@link #DEFAULT_CAPACITY},KEY有序 */ public JSONObject() { - this(JSONConfig.create()); + this(JSONConfig.of()); } /** @@ -67,8 +67,8 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @since 4.1.19 */ public JSONObject(final int capacity, final JSONConfig config) { - super(InternalJSONUtil.createRawMap(capacity, ObjUtil.defaultIfNull(config, JSONConfig.create()))); - this.config = ObjUtil.defaultIfNull(config, JSONConfig.create()); + super(InternalJSONUtil.createRawMap(capacity, ObjUtil.defaultIfNull(config, JSONConfig.of()))); + this.config = ObjUtil.defaultIfNull(config, JSONConfig.of()); } /** @@ -84,7 +84,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @param source JavaBean或者Map对象或者String */ public JSONObject(final Object source) { - this(source, JSONConfig.create().setIgnoreNullValue(InternalJSONUtil.defaultIgnoreNullValue(source))); + this(source, JSONConfig.of().setIgnoreNullValue(InternalJSONUtil.defaultIgnoreNullValue(source))); } /** 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 de0289c43..f3755ff96 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java @@ -113,7 +113,7 @@ public class JSONUtil { * @since 3.0.9 */ public static JSONObject parseObj(final Object obj, final boolean ignoreNullValue) { - return new JSONObject(obj, JSONConfig.create().setIgnoreNullValue(ignoreNullValue)); + return new JSONObject(obj, JSONConfig.of().setIgnoreNullValue(ignoreNullValue)); } /** @@ -148,7 +148,7 @@ public class JSONUtil { * @since 3.2.3 */ public static JSONArray parseArray(final Object arrayOrCollection, final boolean ignoreNullValue) { - return new JSONArray(arrayOrCollection, JSONConfig.create().setIgnoreNullValue(ignoreNullValue)); + return new JSONArray(arrayOrCollection, JSONConfig.of().setIgnoreNullValue(ignoreNullValue)); } /** @@ -438,7 +438,7 @@ public class JSONUtil { * @since 4.3.2 */ public static T toBean(final String jsonString, final Type beanType, final boolean ignoreError) { - return parse(jsonString, JSONConfig.create().setIgnoreError(ignoreError)).toBean(beanType); + return parse(jsonString, JSONConfig.of().setIgnoreError(ignoreError)).toBean(beanType); } /** diff --git a/hutool-json/src/main/java/cn/hutool/json/jwt/Claims.java b/hutool-json/src/main/java/cn/hutool/json/jwt/Claims.java index 0da7e9348..aade47c62 100755 --- a/hutool-json/src/main/java/cn/hutool/json/jwt/Claims.java +++ b/hutool-json/src/main/java/cn/hutool/json/jwt/Claims.java @@ -21,7 +21,7 @@ public class Claims implements Serializable { private static final long serialVersionUID = 1L; // 时间使用秒级时间戳表示 - private final JSONConfig CONFIG = JSONConfig.create().setDateFormat("#sss"); + private final JSONConfig CONFIG = JSONConfig.of().setDateFormat("#sss"); private JSONObject claimJSON; diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue1075Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue1075Test.java index 96f0c685d..bfd4edd05 100644 --- a/hutool-json/src/test/java/cn/hutool/json/Issue1075Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue1075Test.java @@ -19,7 +19,7 @@ public class Issue1075Test { @Test public void testToBeanIgnoreCase() { // 在忽略大小写的情况下,f2、fac都匹配 - final ObjA o2 = JSONUtil.parseObj(jsonStr, JSONConfig.create().setIgnoreCase(true)).toBean(ObjA.class); + final ObjA o2 = JSONUtil.parseObj(jsonStr, JSONConfig.of().setIgnoreCase(true)).toBean(ObjA.class); Assert.assertEquals("fac", o2.getFAC()); Assert.assertEquals("f2", o2.getF2()); diff --git a/hutool-json/src/test/java/cn/hutool/json/Issue2223Test.java b/hutool-json/src/test/java/cn/hutool/json/Issue2223Test.java index ee8126021..327c81015 100755 --- a/hutool-json/src/test/java/cn/hutool/json/Issue2223Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/Issue2223Test.java @@ -23,12 +23,12 @@ public class Issue2223Test { map1.put("m1", m1); Assert.assertEquals("{\"m1\":{\"2022/0\":0,\"2022/1\":1,\"2022/2\":2,\"2022/3\":3,\"2022/4\":4}}", - JSONUtil.toJsonStr(map1, JSONConfig.create())); + JSONUtil.toJsonStr(map1, JSONConfig.of())); final BeanDemo beanDemo = new BeanDemo(); beanDemo.setMap1(map1); Assert.assertEquals("{\"map1\":{\"m1\":{\"2022/0\":0,\"2022/1\":1,\"2022/2\":2,\"2022/3\":3,\"2022/4\":4}}}", - JSONUtil.toJsonStr(beanDemo, JSONConfig.create())); + JSONUtil.toJsonStr(beanDemo, JSONConfig.of())); } @Data diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI4RBZ4Test.java b/hutool-json/src/test/java/cn/hutool/json/IssueI4RBZ4Test.java index 6ef5586fc..7fa39184a 100755 --- a/hutool-json/src/test/java/cn/hutool/json/IssueI4RBZ4Test.java +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI4RBZ4Test.java @@ -12,7 +12,7 @@ public class IssueI4RBZ4Test { public void sortTest(){ final String jsonStr = "{\"id\":\"123\",\"array\":[1,2,3],\"outNum\":356,\"body\":{\"ava1\":\"20220108\",\"use\":1,\"ava2\":\"20230108\"},\"name\":\"John\"}"; - final JSONObject jsonObject = JSONUtil.parseObj(jsonStr, JSONConfig.create().setNatureKeyComparator()); + final JSONObject jsonObject = JSONUtil.parseObj(jsonStr, JSONConfig.of().setNatureKeyComparator()); Assert.assertEquals("{\"array\":[1,2,3],\"body\":{\"ava1\":\"20220108\",\"ava2\":\"20230108\",\"use\":1},\"id\":\"123\",\"name\":\"John\",\"outNum\":356}", jsonObject.toString()); } } diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI50EGGTest.java b/hutool-json/src/test/java/cn/hutool/json/IssueI50EGGTest.java index 348b5b7c0..699f48383 100755 --- a/hutool-json/src/test/java/cn/hutool/json/IssueI50EGGTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI50EGGTest.java @@ -10,7 +10,7 @@ public class IssueI50EGGTest { @Test public void toBeanTest(){ final String data = "{\"return_code\": 1, \"return_msg\": \"成功\", \"return_data\" : null}"; - final ApiResult apiResult = JSONUtil.toBean(data, JSONConfig.create().setIgnoreCase(true), ApiResult.class); + final ApiResult apiResult = JSONUtil.toBean(data, JSONConfig.of().setIgnoreCase(true), ApiResult.class); Assert.assertEquals(1, apiResult.getReturn_code()); } 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 e56fe9517..5258c1479 100755 --- a/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONArrayTest.java @@ -31,11 +31,11 @@ public class JSONArrayTest { // JSONObject实现了Iterable接口,可以转换为JSONArray final JSONObject jsonObject = new JSONObject(); - JSONArray jsonArray = new JSONArray(jsonObject, JSONConfig.create()); + JSONArray jsonArray = new JSONArray(jsonObject, JSONConfig.of()); Assert.assertEquals(new JSONArray(), jsonArray); jsonObject.set("key1", "value1"); - jsonArray = new JSONArray(jsonObject, JSONConfig.create()); + jsonArray = new JSONArray(jsonObject, JSONConfig.of()); Assert.assertEquals(1, jsonArray.size()); Assert.assertEquals("[{\"key1\":\"value1\"}]", jsonArray.toString()); } @@ -44,7 +44,7 @@ public class JSONArrayTest { public void addNullTest(){ final List aaa = ListUtil.view("aaa", null); final String jsonStr = JSONUtil.toJsonStr(JSONUtil.parse(aaa, - JSONConfig.create().setIgnoreNullValue(false))); + JSONConfig.of().setIgnoreNullValue(false))); Assert.assertEquals("[\"aaa\",null]", jsonStr); } @@ -135,7 +135,7 @@ public class JSONArrayTest { public void toDictListTest() { final String jsonArr = "[{\"id\":111,\"name\":\"test1\"},{\"id\":112,\"name\":\"test2\"}]"; - final JSONArray array = JSONUtil.parseArray(jsonArr, JSONConfig.create().setIgnoreError(false)); + final JSONArray array = JSONUtil.parseArray(jsonArr, JSONConfig.of().setIgnoreError(false)); final List list = JSONUtil.toList(array, Dict.class); @@ -273,7 +273,7 @@ public class JSONArrayTest { @Test public void putNullTest(){ - final JSONArray array = JSONUtil.createArray(JSONConfig.create().setIgnoreNullValue(false)); + final JSONArray array = JSONUtil.createArray(JSONConfig.of().setIgnoreNullValue(false)); array.set(null); Assert.assertEquals("[null]", array.toString()); 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 b33f4cd2a..13b761231 100755 --- a/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONObjectTest.java @@ -199,7 +199,7 @@ public class JSONObjectTest { @Test public void toBeanTest() { final JSONObject subJson = JSONUtil.createObj().set("value1", "strValue1").set("value2", "234"); - final JSONObject json = JSONUtil.createObj().set("strValue", "strTest").set("intValue", 123) + final JSONObject json = JSONUtil.createObj(JSONConfig.of().setIgnoreError(true)).set("strValue", "strTest").set("intValue", 123) // 测试空字符串转对象 .set("doubleValue", "") .set("beanValue", subJson) @@ -453,7 +453,7 @@ public class JSONObjectTest { @Test public void setDateFormatTest() { - final JSONConfig jsonConfig = JSONConfig.create(); + final JSONConfig jsonConfig = JSONConfig.of(); jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); final JSONObject json = new JSONObject(jsonConfig); @@ -465,7 +465,7 @@ public class JSONObjectTest { @Test public void setDateFormatTest2() { - final JSONConfig jsonConfig = JSONConfig.create(); + final JSONConfig jsonConfig = JSONConfig.of(); jsonConfig.setDateFormat("yyyy#MM#dd"); final Date date = DateUtil.parse("2020-06-05 11:16:11"); @@ -485,7 +485,7 @@ public class JSONObjectTest { @Test public void setCustomDateFormatTest() { - final JSONConfig jsonConfig = JSONConfig.create(); + final JSONConfig jsonConfig = JSONConfig.of(); jsonConfig.setDateFormat("#sss"); final Date date = DateUtil.parse("2020-06-05 11:16:11"); @@ -599,7 +599,7 @@ public class JSONObjectTest { @Test(expected = JSONException.class) public void createJSONObjectTest() { // 集合类不支持转为JSONObject - new JSONObject(new JSONArray(), JSONConfig.create()); + new JSONObject(new JSONArray(), JSONConfig.of()); } @Test @@ -646,7 +646,7 @@ public class JSONObjectTest { @Test public void filterIncludeTest() { - final JSONObject json1 = JSONUtil.createObj(JSONConfig.create()) + final JSONObject json1 = JSONUtil.createObj(JSONConfig.of()) .set("a", "value1") .set("b", "value2") .set("c", "value3") @@ -658,7 +658,7 @@ public class JSONObjectTest { @Test public void filterExcludeTest() { - final JSONObject json1 = JSONUtil.createObj(JSONConfig.create()) + final JSONObject json1 = JSONUtil.createObj(JSONConfig.of()) .set("a", "value1") .set("b", "value2") .set("c", "value3") @@ -670,7 +670,7 @@ public class JSONObjectTest { @Test public void editTest() { - final JSONObject json1 = JSONUtil.createObj(JSONConfig.create()) + final JSONObject json1 = JSONUtil.createObj(JSONConfig.of()) .set("a", "value1") .set("b", "value2") .set("c", "value3") @@ -690,7 +690,7 @@ public class JSONObjectTest { @Test public void toUnderLineCaseTest() { - final JSONObject json1 = JSONUtil.createObj(JSONConfig.create()) + final JSONObject json1 = JSONUtil.createObj(JSONConfig.of()) .set("aKey", "value1") .set("bJob", "value2") .set("cGood", "value3") @@ -705,7 +705,7 @@ public class JSONObjectTest { @Test public void nullToEmptyTest() { - final JSONObject json1 = JSONUtil.createObj(JSONConfig.create().setIgnoreNullValue(false)) + final JSONObject json1 = JSONUtil.createObj(JSONConfig.of().setIgnoreNullValue(false)) .set("a", null) .set("b", "value2"); diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java index a79a4bffe..efdbbd0c8 100644 --- a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java @@ -191,7 +191,7 @@ public class JSONUtilTest { Assert.assertEquals("{\"test2\":12}", jsonObjectDefault.toString()); // 不去除多余的0 - final JSONObject jsonObject = JSONUtil.createObj(JSONConfig.create().setStripTrailingZeros(false)) + final JSONObject jsonObject = JSONUtil.createObj(JSONConfig.of().setStripTrailingZeros(false)) .set("test2", 12.00D); Assert.assertEquals("{\"test2\":12.0}", jsonObject.toString()); diff --git a/hutool-json/src/test/java/cn/hutool/json/TransientTest.java b/hutool-json/src/test/java/cn/hutool/json/TransientTest.java index 400599c20..ee3f5ad5b 100644 --- a/hutool-json/src/test/java/cn/hutool/json/TransientTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/TransientTest.java @@ -20,7 +20,7 @@ public class TransientTest { //noinspection MismatchedQueryAndUpdateOfCollection final JSONObject jsonObject = new JSONObject(detailBill, - JSONConfig.create().setTransientSupport(false)); + JSONConfig.of().setTransientSupport(false)); Assert.assertEquals("{\"id\":\"3243\",\"bizNo\":\"bizNo\"}", jsonObject.toString()); } @@ -32,7 +32,7 @@ public class TransientTest { //noinspection MismatchedQueryAndUpdateOfCollection final JSONObject jsonObject = new JSONObject(detailBill, - JSONConfig.create().setTransientSupport(true)); + JSONConfig.of().setTransientSupport(true)); Assert.assertEquals("{\"bizNo\":\"bizNo\"}", jsonObject.toString()); } @@ -43,7 +43,7 @@ public class TransientTest { detailBill.setBizNo("bizNo"); final JSONObject jsonObject = new JSONObject(detailBill, - JSONConfig.create().setTransientSupport(false)); + JSONConfig.of().setTransientSupport(false)); final Bill bill = jsonObject.toBean(Bill.class); Assert.assertEquals("3243", bill.getId()); @@ -57,7 +57,7 @@ public class TransientTest { detailBill.setBizNo("bizNo"); final JSONObject jsonObject = new JSONObject(detailBill, - JSONConfig.create().setTransientSupport(true)); + JSONConfig.of().setTransientSupport(true)); final Bill bill = jsonObject.toBean(Bill.class); Assert.assertNull(bill.getId());