Десериализация 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 и я ищу способ избежать их.

@РЕДАКТИРОВАТЬ:

Я изменил классы (кошка, собака -> кошка, грузовик) из-за путаницы наследования, классы, используемые здесь в качестве примера, НЕ расширяют друг друга

Ответы на вопрос(1)

Ваш ответ на вопрос