mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix code
This commit is contained in:
parent
a4f0f46ab1
commit
8ee7124797
@ -251,7 +251,10 @@ public final class InternalJSONUtil {
|
|||||||
.setIgnoreCase(config.isIgnoreCase())
|
.setIgnoreCase(config.isIgnoreCase())
|
||||||
.setIgnoreError(config.isIgnoreError())
|
.setIgnoreError(config.isIgnoreError())
|
||||||
.setIgnoreNullValue(config.isIgnoreNullValue())
|
.setIgnoreNullValue(config.isIgnoreNullValue())
|
||||||
.setTransientSupport(config.isTransientSupport());
|
.setTransientSupport(config.isTransientSupport())
|
||||||
|
// 使用JSON转换器
|
||||||
|
.setConverter((type, value) ->
|
||||||
|
JSONConverter.convertWithCheck(type, value, null, config.isIgnoreError()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,7 +2,6 @@ package cn.hutool.json;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.codec.Base64;
|
||||||
import cn.hutool.core.convert.Convert;
|
|
||||||
import cn.hutool.core.convert.ConvertException;
|
import cn.hutool.core.convert.ConvertException;
|
||||||
import cn.hutool.core.convert.Converter;
|
import cn.hutool.core.convert.Converter;
|
||||||
import cn.hutool.core.convert.ConverterRegistry;
|
import cn.hutool.core.convert.ConverterRegistry;
|
||||||
@ -30,9 +29,10 @@ public class JSONConverter implements Converter {
|
|||||||
|
|
||||||
public static JSONConverter INSTANCE = new JSONConverter();
|
public static JSONConverter INSTANCE = new JSONConverter();
|
||||||
|
|
||||||
|
private static final ConverterRegistry registry;
|
||||||
static {
|
static {
|
||||||
// 注册到转换中心
|
// 注册到转换中心
|
||||||
final ConverterRegistry registry = ConverterRegistry.getInstance();
|
registry = new ConverterRegistry();
|
||||||
registry.putCustom(JSON.class, INSTANCE);
|
registry.putCustom(JSON.class, INSTANCE);
|
||||||
registry.putCustom(JSONObject.class, INSTANCE);
|
registry.putCustom(JSONObject.class, INSTANCE);
|
||||||
registry.putCustom(JSONArray.class, INSTANCE);
|
registry.putCustom(JSONArray.class, INSTANCE);
|
||||||
@ -43,6 +43,29 @@ public class JSONConverter implements Converter {
|
|||||||
return JSONUtil.parse(value);
|
return JSONUtil.parse(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换值为指定类型,可选是否不抛异常转换<br>
|
||||||
|
* 当转换失败时返回默认值
|
||||||
|
*
|
||||||
|
* @param <T> 目标类型
|
||||||
|
* @param type 目标类型
|
||||||
|
* @param value 值
|
||||||
|
* @param defaultValue 默认值
|
||||||
|
* @param quietly 是否静默转换,true不抛异常
|
||||||
|
* @return 转换后的值
|
||||||
|
* @since 5.3.2
|
||||||
|
*/
|
||||||
|
public static <T> T convertWithCheck(final Type type, final Object value, final T defaultValue, final boolean quietly) {
|
||||||
|
try {
|
||||||
|
return registry.convert(type, value, defaultValue);
|
||||||
|
} catch (final Exception e) {
|
||||||
|
if(quietly){
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSON递归转换<br>
|
* JSON递归转换<br>
|
||||||
* 首先尝试JDK类型转换,如果失败尝试JSON转Bean<br>
|
* 首先尝试JDK类型转换,如果失败尝试JSON转Bean<br>
|
||||||
@ -81,7 +104,7 @@ public class JSONConverter implements Converter {
|
|||||||
return (T) Base64.decode((CharSequence) value);
|
return (T) Base64.decode((CharSequence) value);
|
||||||
} else if (targetClass.isAssignableFrom(Date.class) || targetClass.isAssignableFrom(TemporalAccessor.class)) {
|
} else if (targetClass.isAssignableFrom(Date.class) || targetClass.isAssignableFrom(TemporalAccessor.class)) {
|
||||||
// 用户指定了日期格式,获取日期属性时使用对应格式
|
// 用户指定了日期格式,获取日期属性时使用对应格式
|
||||||
final String valueStr = Convert.toStr(value);
|
final String valueStr = convertWithCheck(String.class, value, null, true);
|
||||||
if (null == valueStr) {
|
if (null == valueStr) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -137,7 +160,7 @@ public class JSONConverter implements Converter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final T targetValue = Convert.convertWithCheck(targetType, value, null, ignoreError);
|
final T targetValue = convertWithCheck(targetType, value, null, ignoreError);
|
||||||
|
|
||||||
if (null == targetValue && false == ignoreError) {
|
if (null == targetValue && false == ignoreError) {
|
||||||
if (StrUtil.isBlankIfStr(value)) {
|
if (StrUtil.isBlankIfStr(value)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user