1

如果我只是加入.toJsonand.fromJson而不是使用.writeObjectand .readObject,我会得到相同的结果吗?此外,您可以放入要序列化的类中的和方法
的 GSON 等价物是什么?readObjectwriteObject

4

2 回答 2

1

Gson 不支持继承或循环引用,不足以替代 Java 序列化。

对于继承,使用RuntimeTypeAdapterFactory将类名编码为 JSON 值。

对于循环引用,您可以使用GraphAdapterBuilder按引用而不是按值对值进行编码。

这些文件都不包含在 Gson 发行版中。如果您想使用它们,您需要将它们复制并粘贴到您的应用程序中。

于 2012-12-26T16:51:00.640 回答
0

Gson AFAIK 没有 readObject 和 writeObject (根据它的API

至于问题的第二部分:GSON 的工作原理是这样的:您可以像这样实现序列化器/反序列化器:

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

于 2012-12-26T07:04:29.457 回答