Отправка 2-х объектной модели в качестве входа для модификации @body - PullRequest
1 голос
/ 12 февраля 2020

Привет, я хочу отправить 2 объекта БЕЗ создания новой модели API.

Например, у меня есть класс с именем User и другой с именем Device.

Я хочу объединить оба эти модели и отправить его в виде тела запроса.

Дооснащение После запроса будет что-то ниже:

@POST("/login")
fun loginAPI(@Body user: UserModel, @Body device : DeviceModel): Observer<CallbackModel>

А также Final JSON Будет что-то вроде этого:

"user" : {
   "username" : "XXX"
   ...
}
"device" : {
   "imei" : "XXX"
   ...
}

Помните: Я знаю, что могу создать новый класс, который содержит атрибуты пользователя и устройства и т. Д. c. Проблема в том, что мне не нравится создавать новый класс для каждой конечной точки.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Модернизация не позволяет отправлять несколько объектов тела в одном запросе, поскольку она содержит тело сообщения запроса POST. Поэтому в качестве альтернативного решения вы можете передать обе модели в теле hashmap следующим образом:

Интерфейс API

@POST("/login")
fun loginAPI(@Body map: HashMap): Observer<CallbackModel>

Класс вызова

val map = HashMap<String, Object>()
map.put("user", userModel)
map.put("device", deviceModel)

Надеюсь, это поможет.

0 голосов
/ 12 февраля 2020

Вы можете создать свой объект, как показано ниже:

JSONObject parent = new JSONObject();

JSONObject user = new JSONObject();
user.put("key", "value");
...

JSONObject device = new JSONObject();
device.put("key", "value");
...

parent.put("user", user);
parent.put("device", device);
...