Android - обработка различных типов данных JSON из бэкэнда Django - PullRequest
0 голосов
/ 08 июля 2019

Я получаю следующий вывод из запроса:

{
    "allposts": [
        {
            "created": "2019-07-08T12:25:34.732217Z", 
            "description": "My First ImagePost", 
            "id": 1, 
            "imagepostdata": "http://127.0.0.1:8000/media/Images/None/placeholder.jpg", 
            "owner": "http://127.0.0.1:8000/users/getUserById/1/", 
            "profilePhotoOfUser": "http://127.0.0.1:8000/media/Images/None/placeholder.jpg", 
            "type": "ImagePost", 
            "url": "http://127.0.0.1:8000/posts/getImagePostById/1/"
        }, 
        {
            "audio": "http://127.0.0.1:8000/media/Audios/None/placeholder.3gp", 
            "clique": "http://127.0.0.1:8000/cliques/getCliqueById/1/", 
            "created": "2019-07-08T12:25:56.748829Z", 
            "id": 2, 
            "image": "http://127.0.0.1:8000/media/Images/None/placeholder.jpg", 
            "owner": "http://127.0.0.1:8000/users/getUserById/1/", 
            "profilePhotoOfUser": "http://127.0.0.1:8000/media/Images/None/placeholder.jpg", 
            "text": "My First TextPost", 
            "type": "TextPost", 
            "url": "http://127.0.0.1:8000/posts/getTextPostById/2/", 
            "video": "http://127.0.0.1:8000/media/Videos/None/placeholder.mp4"
        }
    ]
}

Первый элемент в массиве JSON представляет публикацию изображения, а второй элемент представляет текстовую публикацию. У меня есть изображения и текстовые сообщения как тип сообщения. Здесь вы можете видеть, что сервер предоставляет запрашивающему клиенту различные типы, собранные как один выход. Поля предметов могут быть разными. Например: imagepostdata против textpostdata.

Теперь я не уверен, как определить классы модели в моем проекте Android. Я использую Retrofit в качестве сетевой библиотеки в сочетании с Gson.

Мой вопрос: достаточно написать классы моделей ImagePost и TextPost отдельно и позволить Retrofit / Gson справиться с остальными? Или я должен скопировать / вставить вывод в http://www.jsonschema2pojo.org/ и получить только один класс модели для различных элементов.

Я спрашиваю, потому что в методах обратного вызова для запроса Retrofit я должен также предоставить класс модели, в который отображаются данные JSON. И я не знал, какой выбрать.

Каков нормальный подход к программированию в таком случае?

...