如果我只是放入.toJson
和.fromJson
而不是使用.writeObject
和.readObject
,我会得到相同的结果吗?
另外,GSON等同于readObject
和writeObject
方法可以放入要序列化的类中吗?
答案 0 :(得分:1)
Gson不支持继承或循环引用,足以成为Java序列化的替代品。
对于继承,使用RuntimeTypeAdapterFactory对JSON值中的类名进行编码。
对于循环引用,您可以使用GraphAdapterBuilder按引用而不是按值对值进行编码。
这些文件都不包含在Gson发行版中。如果您想使用它们,则需要将它们复制并粘贴到您的应用中。
答案 1 :(得分:0)
Gson AFAIK没有readObject& writeObject(根据它的API)
关于问题的第二部分:GSON的工作方式与this类似:你可以像这样实现一个序列化器/解串器:
private class DateTimeSerializer implements JsonSerializer<DateTime> {
public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}
}
然后使用gson.registerTypeAdapter(DateTime.class, DateTimeSerializer());