如何使用Gson将HashMap转换为JSON。
class ClassData {
public String jsonString;
public Class classType;
}
HashMap<String, ClassData> map = new HashMap<>();
void convert(){
new Gson().toJson(map); // throws
}
我正在获取下一个异常
尝试序列化java.lang.Class:java.lang.String。忘记注册类型适配器?
2条答案
按热度按时间envsm3lx1#
我的方法适用于Gson 2.3.1与Java 1.7,不能保证它将与Android一起工作。
问题出在变量
classType
上,因为Gson不能处理Class
类型,所以我们必须为Class创建一个TypeAdapter。要使其正常工作,您需要一个TypeAdapterFactory。
并将TypeAdapterFactory注册到Gson构建器。
AFAIK您必须使用TypeAdapterFactory。直接注册的TypeAdapter
当遇到
Class
类型的对象时,似乎会被忽略。Gson将
HashMap
和Java类示例转换为JSON对象。mrphzbgm2#
您需要为ClassData实现自己的自定义序列化程序,然后将其注册到Gson Builder。
输出:{“键”:“键”}
阅读更多信息:https://sites.google.com/site/gson/gson-user-guide#TOC-Writing-a-Serializer