使用gson反序列化json数组?

Ram*_*tra 5 gson deserialization json-deserialization

我有我的json:

{
   "status": 200,
   "data": [
       {
            "catId": 638,
            "catName": "Helena Bonham Carter",
            "catUniqueName": "helena-bonham-carter",
            "catSlug": ""
       },
       {
        ...
       }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我的分类模型为:

public class Category {

    private double catId;
    private String catName;
    private String catUniqueName;
    private String catSlug;
}
Run Code Online (Sandbox Code Playgroud)

我的gson自定义解串器如下:

Type listType = new TypeToken<ArrayList<Category>>(){}.getType();

Gson gson = new GsonBuilder()
            .registerTypeAdapter(listType, new CategoryDeserializer())
            .create();

private class CategoryDeserializer implements JsonDeserializer {
    @Override
    public Category deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        Gson gson = new Gson();
        return gson.fromJson(((JsonObject) json).get("data"), typeOfT);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Retrofit库,它使用gson序列化/反序列化json对象.我通过这个自定义gson反序列化器进行改造,但它给了我一个错误.你能告诉我在去骨化的时候我哪里出错吗?

错误:

java.util.ArrayList cannot be cast to com.compzets.app.models.Category
Run Code Online (Sandbox Code Playgroud)

预期结果:

我想要ArrayList of Category来自json.

Ram*_*tra 3

deserialize()更改from的返回类型Category解决ArrayList<Category>了该问题。其余代码是正确的。