修复JSONBeanParser在遇到List时没有被正确递归问题

This commit is contained in:
Looly
2023-07-20 23:39:24 +08:00
parent b74f3f1e3e
commit 4624b16751
4 changed files with 63 additions and 73 deletions

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.bean.copier.ValueProvider;
import cn.hutool.core.convert.AbstractConverter;
import cn.hutool.core.convert.ConvertException;
import cn.hutool.core.lang.Console;
import cn.hutool.core.map.MapProxy;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
@@ -67,6 +68,16 @@ public class BeanConverter<T> extends AbstractConverter<T> {
@Override
protected T convertInternal(Object value) {
final Class<?>[] interfaces = this.beanClass.getInterfaces();
for (Class<?> anInterface : interfaces) {
if("cn.hutool.json.JSONBeanParser".equals(anInterface.getName())){
// issue#I7M2GZ
final T obj = ReflectUtil.newInstanceIfPossible(this.beanClass);
ReflectUtil.invoke(obj, "parse", value);
return obj;
}
}
if(value instanceof Map ||
value instanceof ValueProvider ||
BeanUtil.isBean(value.getClass())) {