【发布时间】:2016-01-07 16:31:21
【问题描述】:
假设我们有这样的结构:
JSON:
{
"body": {
"cats": [
{
"cat": {
"id": 1,
"title": "cat1"
}
},
{
"cat": {
"id": 2,
"title": "cat2"
}
}
]
}
}
以及对应的POJO:
Response.class
private final Body body;
Body.class
private final Collection<CatWrapper> cats
CatWrapper.class
private final Cat cat
猫类
private final int id;
private final String title;
但是假设现在我们有相同的结构,但我们收到的是truck而不是truck
{
"body": {
"trucks": [
{
"truck": {
"id": 1,
"engine": "big",
"wheels": 12
}
},
{
"truck": {
"id": 2,
"engine": "super big",
"wheels": 128
}
}
]
}
}
我在 Android 上使用 GSON(默认 Retrofit json 解析器),请在给出解决方案时考虑这一点。
我们可以在这里使用泛型,所以响应看起来像:
private final Body<ListResponse<ItemWrapper<T>> 但我们不能,因为字段名称是特定于一个类的。
问题:
如何在不创建这么多样板类的情况下自动序列化它?我真的不需要像BodyCat、BodyTruck、BodyAnyOtherClassInThisStructure 这样的单独类,我正在寻找一种避免使用它们的方法。
@编辑:
由于继承混淆,我更改了类(猫、狗 -> 猫、卡车),此处用作示例的类不会相互扩展
【问题讨论】:
标签: java android json generics gson