Я получаю следующий вывод из запроса:
{
"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. И я не знал, какой выбрать.
Каков нормальный подход к программированию в таком случае?