在使用GSON序列化Class(例如String.class)时,出现Attempted to serialize java.lang.Class: java.lang.String. Forgot to register a type adapter?
原因:
Gson不支持类信息,序列化和返序列化,需要我们自定义序列化适配器
public class ClassCodec implements JsonSerializer>, JsonDeserializer > { public static void main(String[] args) { Gson gson = new GsonBuilder().registerTypeAdapter(Class.class, new ClassCodec()).create(); System.out.println(gson.toJson(String.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 public JsonElement serialize(Class> src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.getName()); } }