Retrofit 2.0: Как отобразить объекты с другим типом - PullRequest
0 голосов
/ 30 апреля 2018

Это мой пример ответа JSON:

{
"success": true,
"details": {
    "banners": [
        {
            "banner_id": "1",
            "file_id": "368",
            "title": "INANG KALIKASAN'S BAD HAIR DAY",
            "description": "Et aeterno partiendo his, vim ponderum abhorreant et. Eum debet recusabo repudiandae in.",
            "created": "2018-03-09 07:56:04",
            "modified": "2018-04-02 09:59:54",
            "deleted": "",
            "file_name": "https://globegfs.imgix.net/uploads/2018-04-02/8a90371e9ad33cf06848b354b1fbd795.jpg",
            "orig_file_name": "hero-1.jpg"
        }
    ],
    "recent_books": [
        {
            "content_id": "353",
            "category_id": "24",
            "title": "One Hundred Fourth Symphony, in D-major",
            "author": "Franz Josef Haydn",
            "description": "The last of the 12 London Symphonies written by Franz Haydn. This ebook contains copies of the 4 movements in .mid format.",
            "tags": [
                {
                    "content_id": "353",
                    "tag_id": "14",
                    "created": "2018-04-27 15:57:46",
                    "tag_name": "Ray Collections"
                }
            ]
        }
    ],
    "classics": [
        {
            "content_id": "353",
            "category_id": "24",
            "title": "One Hundred Fourth Symphony, in D-major",
            "author": "Franz Josef Haydn",
            "description": "The last of the 12 London Symphonies written by Franz Haydn. This ebook contains copies of the 4 movements in .mid format.",
            "tags": [
                {
                    "content_id": "353",
                    "tag_id": "14",
                    "created": "2018-04-27 15:57:46",
                    "tag_name": "Ray Collections"
                }
            ]
        }
    ]
}

}

Только объект banners имеет другой список содержимого. Все последующие элементы Json будут иметь одинаковое содержимое, но в списке, где его узел Json будет иметь действительное значение title. Как я могу отобразить это в HashMap?

Я подумал, что это будет выглядеть примерно так:

private List<GFSBannerResponse> banners;
private List<HashMap<String, List<GFSContentResponse>>> featuredContent;

но я до сих пор не представляю, как это реализовать. Я использую Retrofit 2.0 и Gson.

1 Ответ

0 голосов
/ 02 мая 2018

В итоге я реализовал это так:

@SerializedName("details")
@Expose
private JsonElement details;

Я просто использовал JsonParser для анализа содержимого до JsonElement. Застрял в GSON для всего этого, хотя это не было идеальной реализацией. Постараюсь реализовать собственный десериализатор в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...