Gson将类序列化和反序列化
Posted 技术无产者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson将类序列化和反序列化相关的知识,希望对你有一定的参考价值。
对于Gson不知道怎么将类序列化和反序列化,如果想要对类进行序列化和反序列化需要提供给一个类型转换器指明怎么将类转换。FastJson就不会遇到这个问题
不提供就换报下面的错误
class ClassCodec implements JsonSerializer<Class<?>>, JsonDeserializer<Class<?>> {
@Override
public Class<?> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
try {
String str = json.getAsString();
return Class.forName(str); // 反射
} catch (ClassNotFoundException e) {
throw new JsonParseException(e);
}
}
@Override // String.class
public JsonElement serialize(Class<?> src, Type typeOfSrc, JsonSerializationContext context) {
// class -> json
return new JsonPrimitive(src.getName());
// 需要将类封装成一个JsonElement对象返回
// Class<?> src 就是需要转换成Json字符串的类,src.getName()获取该类的名字
//因为这里测试使用的String ,所以用JsonPrimitive原始类型封装
}
}
调用:
Gson gson = new GsonBuilder().registerTypeAdapter(Class.class, new Serializer.ClassCodec()).create();
String json = gson.toJson(object);
以上是关于Gson将类序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章
HashMap(key,Object)中的Java Gson序列化和反序列化对象[重复]