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