mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
修复JSONUtil序列化和反序列化预期的结果不一致问题
This commit is contained in:
parent
0a8af560ab
commit
051ce35828
@ -123,7 +123,8 @@ public class RegisterConverter implements Converter, Serializable {
|
|||||||
* @return 转换器
|
* @return 转换器
|
||||||
*/
|
*/
|
||||||
public Converter getDefaultConverter(final Type type) {
|
public Converter getDefaultConverter(final Type type) {
|
||||||
return (null == defaultConverterMap) ? null : defaultConverterMap.get(TypeUtil.getClass(type));
|
final Class<?> key = null == type ? null : TypeUtil.getClass(type);
|
||||||
|
return (null == defaultConverterMap || null == key) ? null : defaultConverterMap.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -171,6 +171,12 @@ public class JSONValueMapper {
|
|||||||
return new JSONObject(object, jsonConfig);
|
return new JSONObject(object, jsonConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pr#3507
|
||||||
|
// Class类型保存类名
|
||||||
|
if (object instanceof Class) {
|
||||||
|
return ((Class<?>) object).getName();
|
||||||
|
}
|
||||||
|
|
||||||
// 枚举类保存其字符串形式(4.0.2新增)
|
// 枚举类保存其字符串形式(4.0.2新增)
|
||||||
if (object instanceof Enum
|
if (object instanceof Enum
|
||||||
// Java内部类不做转换
|
// Java内部类不做转换
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package org.dromara.hutool.json;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class Issue3504Test {
|
||||||
|
@Test
|
||||||
|
public void test3504() {
|
||||||
|
final JsonBean jsonBean = new JsonBean();
|
||||||
|
jsonBean.setName("test");
|
||||||
|
jsonBean.setClasses(new Class[]{String.class});
|
||||||
|
final String huToolJsonStr = JSONUtil.toJsonStr(jsonBean);
|
||||||
|
final JsonBean bean = JSONUtil.toBean(huToolJsonStr, JsonBean.class);
|
||||||
|
Assertions.assertNotNull(bean);
|
||||||
|
Assertions.assertEquals("test", bean.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class JsonBean {
|
||||||
|
private String name;
|
||||||
|
private Class<?>[] classes;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package org.dromara.hutool.json;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class Issue3506Test {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void toBeanTest() {
|
||||||
|
final Languages languages = new Languages();
|
||||||
|
languages.setLanguageType(Java.class);
|
||||||
|
|
||||||
|
final String hutoolJSONString = JSONUtil.toJsonStr(languages);
|
||||||
|
final Languages bean = JSONUtil.toBean(hutoolJSONString, Languages.class);
|
||||||
|
Assertions.assertNotNull(bean);
|
||||||
|
Assertions.assertEquals(bean.getLanguageType(), Java.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Languages {
|
||||||
|
private Class<? extends Language> languageType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Language {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Java implements Language {
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user