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