序列化和反序列化接口的ArrayList

时间:2013-09-05 01:15:34

标签: java android serialization deserialization gson

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

1 个答案:

答案 0 :(得分:0)

您需要为类创建序列化程序。

我用过Gson。我所做的是创建一个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