我可以用基本的GSON代替基本的ObjectIve / OutputStream吗?

时间:2012-12-26 03:16:49

标签: java serialization gson

如果我只是放入.toJson.fromJson而不是使用.writeObject.readObject,我会得到相同的结果吗?
另外,GSON等同于readObjectwriteObject方法可以放入要序列化的类中吗?

2 个答案:

答案 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());

注册它们