我需要反序列化一个包含数组的 Json 文件。我知道如何反序列化它以便获得 List 对象,但在框架中我使用的是自定义列表对象,该对象未实现 Java List 接口(interface)。我的问题是,如何为自定义列表对象编写反序列化程序?
编辑:我希望反序列化器是通用的,这意味着我希望它对每一种列表都有效,比如 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();
关于java - 如何在 Gson 中制作自定义列表反序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418160/