使用gson反序列化json数组?

2023-12-10

我的 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 反序列化器进行改造,但它给了我一个错误。你能告诉我反序列化时哪里出错了吗?

Error:

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

预期结果:

I want ArrayList of Category来自 json.


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用gson反序列化json数组? 的相关文章

随机推荐