Как обработать неизвестный тип ответа с помощью Retrofit - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в Retrofit и GSON до модернизации, я создал собственный класс для вызовов API и вручную отображаю данные.

Это мой стандартный тип ответа

{
  "timestamp",
  "status",
  "message",
  "payLoad",
  "error"
}

Если Я получаю сообщение об ошибке от сервера, поэтому мой ответ выглядит как

{
  "timestamp":123456789,
  "status":302,
  "message":"Send All Data",
  "error":"Partial Content"
}

Если я получаю Успех, но Payload IS JSONObject, поэтому ответ будет выглядеть как

{
  "timestamp":123456789,
  "status":200,
  "message":"Save Successfully",
  "payLoad":"{
    "token": "...",
    "userDetails": {
      "id": 1,
      "username": "...",
      "firstName": "Deepak",
      "lastName": "Gupta",
      "gender": "MALE",
      "address": ...,
      "demoModel": {
        "id": 1,
        "demo": "enginner",
        "demoConstant": "ENGINNER",
        "active": true
      },
      "registrationDate": 1585831235533,
      "enabled": true,
    "expireTime": 4178010611915}
}

Если я получу Успех, но Payload IS JSONArray, так ответ типа

{
    "timestamp": 1586330473808,
    "status": 200,
    "message": "SUCCESS",
    "payLoad": [
        {
            ...
        },{
            ...
        },{
            ...
        }
    ]
}

Я попытался сделать Payload to Object, а затем, используя InstanceOf, приведу к соответствующей модели или списку, но затем получу ошибку, связанная с связью дерева не приведена к списку или объекту.

...