mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
修复序列化和反序列化Class问题
This commit is contained in:
parent
e205d2659a
commit
45ed3a95f9
@ -231,6 +231,11 @@ public class CompositeConverter extends RegisterConverter {
|
|||||||
return (T) KBeanConverter.INSTANCE.convert(type, value);
|
return (T) KBeanConverter.INSTANCE.convert(type, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// issue#I7FQ29 Class
|
||||||
|
if("java.lang.Class".equals(rowType.getName())){
|
||||||
|
return (T) ClassConverter.INSTANCE.convert(type, value);
|
||||||
|
}
|
||||||
|
|
||||||
// 表示非需要特殊转换的对象
|
// 表示非需要特殊转换的对象
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -12,33 +12,7 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.core.convert;
|
package org.dromara.hutool.core.convert;
|
||||||
|
|
||||||
import org.dromara.hutool.core.convert.impl.AtomicBooleanConverter;
|
import org.dromara.hutool.core.convert.impl.*;
|
||||||
import org.dromara.hutool.core.convert.impl.AtomicIntegerArrayConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.AtomicLongArrayConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.AtomicReferenceConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.BooleanConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.CalendarConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.CharacterConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.CharsetConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.ClassConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.CurrencyConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.DateConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.DurationConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.LocaleConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.OptConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.OptionalConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.PathConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.PeriodConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.ReferenceConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.StackTraceElementConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.StringConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.TemporalAccessorConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.TimeZoneConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.URIConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.URLConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.UUIDConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.XMLGregorianCalendarConverter;
|
|
||||||
import org.dromara.hutool.core.convert.impl.ZoneIdConverter;
|
|
||||||
import org.dromara.hutool.core.date.DateTime;
|
import org.dromara.hutool.core.date.DateTime;
|
||||||
import org.dromara.hutool.core.lang.Opt;
|
import org.dromara.hutool.core.lang.Opt;
|
||||||
import org.dromara.hutool.core.map.SafeConcurrentHashMap;
|
import org.dromara.hutool.core.map.SafeConcurrentHashMap;
|
||||||
@ -52,27 +26,9 @@ import java.net.URI;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.time.DayOfWeek;
|
import java.time.*;
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.Month;
|
|
||||||
import java.time.MonthDay;
|
|
||||||
import java.time.OffsetDateTime;
|
|
||||||
import java.time.OffsetTime;
|
|
||||||
import java.time.Period;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import java.time.temporal.TemporalAccessor;
|
import java.time.temporal.TemporalAccessor;
|
||||||
import java.util.Calendar;
|
import java.util.*;
|
||||||
import java.util.Currency;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.TimeZone;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicIntegerArray;
|
import java.util.concurrent.atomic.AtomicIntegerArray;
|
||||||
import java.util.concurrent.atomic.AtomicLongArray;
|
import java.util.concurrent.atomic.AtomicLongArray;
|
||||||
@ -248,7 +204,6 @@ public class RegisterConverter implements Converter, Serializable {
|
|||||||
defaultConverterMap.put(AtomicLongArray.class, new AtomicLongArrayConverter());
|
defaultConverterMap.put(AtomicLongArray.class, new AtomicLongArrayConverter());
|
||||||
|
|
||||||
// 其它类型
|
// 其它类型
|
||||||
defaultConverterMap.put(Class.class, new ClassConverter());
|
|
||||||
defaultConverterMap.put(TimeZone.class, new TimeZoneConverter());
|
defaultConverterMap.put(TimeZone.class, new TimeZoneConverter());
|
||||||
defaultConverterMap.put(ZoneId.class, new ZoneIdConverter());
|
defaultConverterMap.put(ZoneId.class, new ZoneIdConverter());
|
||||||
defaultConverterMap.put(Locale.class, new LocaleConverter());
|
defaultConverterMap.put(Locale.class, new LocaleConverter());
|
||||||
|
@ -24,6 +24,11 @@ import org.dromara.hutool.core.classloader.ClassLoaderUtil;
|
|||||||
public class ClassConverter extends AbstractConverter {
|
public class ClassConverter extends AbstractConverter {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单例
|
||||||
|
*/
|
||||||
|
public static ClassConverter INSTANCE = new ClassConverter();
|
||||||
|
|
||||||
private final boolean isInitialized;
|
private final boolean isInitialized;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
35
hutool-json/src/test/java/org/dromara/hutool/json/IssueI7FQ29Test.java
Executable file
35
hutool-json/src/test/java/org/dromara/hutool/json/IssueI7FQ29Test.java
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2023 looly(loolly@aliyun.com)
|
||||||
|
* Hutool is licensed under Mulan PSL v2.
|
||||||
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||||
|
* You may obtain a copy of Mulan PSL v2 at:
|
||||||
|
* http://license.coscl.org.cn/MulanPSL2
|
||||||
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||||
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||||
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the Mulan PSL v2 for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.dromara.hutool.json;
|
||||||
|
|
||||||
|
import org.dromara.hutool.core.reflect.TypeReference;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://gitee.com/dromara/hutool/issues/I7FQ29
|
||||||
|
*/
|
||||||
|
public class IssueI7FQ29Test {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void toMapTest() {
|
||||||
|
final String jsonStr = "{\"trans_no\": \"java.lang.String\"}";
|
||||||
|
final Map<String, Class<?>> map = JSONUtil.toBean(jsonStr, new TypeReference<Map<String, Class<?>>>() {
|
||||||
|
});
|
||||||
|
|
||||||
|
Assertions.assertNotNull(map);
|
||||||
|
Assertions.assertEquals(String.class, map.get("trans_no"));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user