Десериализовать динамический ответ API с помощью Gson - PullRequest
0 голосов
/ 24 сентября 2019

Я использую API в своем приложении для Android, используя Retrofit + OkHttp.Я использую gson для десериализации ответа json.Если произойдет ошибка HTTP, обычный ответ json будет выглядеть следующим образом:

{
  "httpStatus": 401,
  "devMessage": "Invalid credentials",
  "message": "Invalid credentials"
}

Обычно, если я получил ошибку HTTP, я возьму сообщение об ошибке из поля message и покажу его пользователю.Но иногда поле message не дает четкого сообщения об ошибке.И подробное сообщение об ошибке, представленное в data -> fields в динамическом имени поля, например:

{
  "httpStatus": 422,
  "devMessage": "The given data was invalid.",
  "message": "The given data was invalid.",
  "data": {
    "fields": {
      "user.phone": [
        "The user.phone field is required."
      ]
    }
  }
}

Или

{
  "httpStatus": 422,
  "devMessage": "The given data was invalid.",
  "message": "The given data was invalid.",
  "data": {
    "fields": {
      "location.address": [
        "The location.address field is required."
      ]
    }
  }
}

Если существуют подробности ошибки, мне нужно принять подробныесообщение из этого поля и показать его как четкое сообщение об ошибке для пользователя.Так, например, в случае выше, я покажу сообщение внутри data -> fields -> location.address -> ERROR MESSAGE

Как решить эту проблему?

...