如何在Gson中制作自定义列表反序列化程序?
我需要反序列化一个有数组的Json文件。 我知道如何反序列化它,以便获得一个List对象,但在框架中,我使用了一个不实现Java List接口的自定义列表对象。 我的问题是,如何为我的自定义列表对象编写反序列化器?
编辑:我想反序列化是普遍的,这意味着我希望它不适用于每种类型的列表,如CustomList<Integer>
, CustomList<String>
, CustomList<CustomModel>
不仅仅是一种特定类型的列表,因为它会很烦人为我使用的每种类型制作反序列化器。
这就是我想到的:
class CustomListConverter implements JsonDeserializer<CustomList<?>> {
public CustomList deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx) {
Type valueType = ((ParameterizedType) typeOfT).getActualTypeArguments()[0];
CustomList<Object> list = new CustomList<Object>();
for (JsonElement item : json.getAsJsonArray()) {
list.add(ctx.deserialize(item, valueType));
}
return list;
}
}
像这样注册它:
Gson gson = new GsonBuilder()
.registerTypeAdapter(CustomList.class, new CustomListConverter())
.create();
链接地址: http://www.djcxy.com/p/37779.html