Я использую 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
Как решить эту проблему?