Forgot to register a type adapter?
翻译结果是忘记注册类型的适配器
原因在序列化成gson的时候里面没有这个适配器
Gson中的属性
final List<TypeAdapterFactory> factories;
final List<TypeAdapterFactory> builderFactories;
final List<TypeAdapterFactory> builderHierarchyFactories;
TypeAdapter会在registerTypeAdapter 包装成TypeAdapterFactory
GsonBuilder里面的方法
registerTypeAdapter(){
....
factories.add(TypeAdapters.newFactory(TypeToken.get(type), (TypeAdapter)typeAdapter));
....
}
然后会根据你的Class类类型找到对应的适配器去序列化你的类型
但是我遇到的是是“java.lang.Class<?>”这个带泛型的类,
根据目前的知识暂时找到不这个类class的编写,只能从手写获取这个类了
cm1 = C
package cn.iocoder.springboot.lab34.actuatordemo;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
public class Test {
private Class<?> type;
public Test() {
}
public static void main(String[] args) {
Class<?>cm1= null;
try {
cm1 = Class.forName("cn.iocoder.springboot.lab34.actuatordemo.Test");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Field[] declaredFields1 = cm1.getDeclaredFields();
Type genericType1 = declaredFields1[0].getGenericType();
}
}
这个Type就是registerTypeAdapter()第一个参数的Type
然后再写一下注册的适配器,就可以解决这个问题了