0

我有一个界面,Item. 对象ProductCategory实现Item。我有一个ArrayList<Item>我需要序列化和反序列化。我尝试使用 Gson,但它不支持接口的序列化和反序列化。我能做什么?(也许与 Gson)

4

1 回答 1

0

您需要为这些类创建一个序列化程序。

我用的是格森。我所做的是创建一个 JSONValueSerializer 类和接口 IJSONValueSerializer(使用一种方法 toJsonString())。然后我在创建的 JSONValueSerializer 类上实现了 JsonSerializer。

现在从那里我所要做的就是在我想要序列化的任何类上实现接口,并且我有一个用于类似类的通用序列化程序。因此,在您的情况下,您可以在 Item 上实现此类,并且序列化程序将告诉它在 GsonBuilder 注册时如何序列化 Product 和 Category。

private class JSONValueSerializer implements JsonSerializer<IJSONValueSerializer> {
  public JsonElement serialize(IJSONValueSerializer src, Type typeOfSrc, JsonSerializationContext context) {
    return new JsonPrimitive(src.toJsonString());
  }
}

然后创建 GsonBuilder 并注册任何将被序列化的类。

GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(MyClass.class, new JSONValueSerializer());
gson.create().toJson(someObjectContainingMyClass);

https://sites.google.com/site/gson/gson-user-guide#TOC-Custom-Serialization-and-Deserialization

于 2013-09-05T06:16:23.173 回答