Десериализация GSON с универсальными типами и именами универсальных полей
Допустим, у нас есть такая структура:
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
Cat.class
private final int id;
private final String title;
Но скажем теперь, у нас та же структура, но вместоCat
мы получаемtruck
{
"body": {
"trucks": [{
"truck": {
"id": 1,
"engine": "big",
"wheels" : 12
}
}, {
"truck": {
"id": 2,
"engine": "super big",
"wheels" : 128
}
}]
}
}
Я использую GSON (по умолчаниюRetrofit
json parser) вклAndroid
Учтите это, предлагая решения.
Мы могли бы использовать дженерики здесь, чтобы ответ выглядел так:
private final Body<ListResponse<ItemWrapper<T>>
но мы не можем, так как имена полей являются специфическими для класса.
ВОПРОС:
Что я могу сделать, чтобы сериализовать его автоматически, не создавая столько шаблонных классов? Мне не нужны отдельные классы, такие какBodyCat
, BodyTruck
, BodyAnyOtherClassInThisStructure
и я ищу способ избежать их.
@РЕДАКТИРОВАТЬ:
Я изменил классы (кошка, собака -> кошка, грузовик) из-за путаницы наследования, классы, используемые здесь в качестве примера, НЕ расширяют друг друга