使用gson反序列化json数组?

我有我的json:

{
   "status": 200,
   "data": [
       {
            "catId": 638,
            "catName": "Helena Bonham Carter",
            "catUniqueName": "helena-bonham-carter",
            "catSlug": ""
       },
       {
        ...
       }
   ]
}

我的分类模型为:

public class Category {

    private double catId;
    private String catName;
    private String catUniqueName;
    private String catSlug;
}

我的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);
    }
}

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

错误:

java.util.ArrayList cannot be cast to com.compzets.app.models.Category

预期结果:

我想从json中分类的ArrayList.

最佳答案
将deserialize()的返回类型从Category更改为ArrayList< Category>解决了这个问题.其余的代码是正确的.

转载注明原文:使用gson反序列化json数组? - 代码日志