如何在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

上一篇: How to make a custom list deserializer in Gson?

下一篇: box work with a div, but not a table?