gpt4 book ai didi

gson - 使用gson反序列化json数组?

转载 作者:行者123 更新时间:2023-12-04 19:04:49 25 4
gpt4 key购买 nike

我有我的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

预期结果:

我要 ArrayList of Category来自 json。

最佳答案

更改 deserialize() 的返回类型来自 CategoryArrayList<Category>解决了这个问题。其余代码是正确的。

关于gson - 使用gson反序列化json数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com