Разбор JSON с динамическим полем с помощью Gson и Retrofit2 - PullRequest
0 голосов
/ 03 октября 2018

Я использую Retrofit2 для доступа к API, и у меня возникают проблемы с гибким анализом ответов на объекты.

Ответы API имеют общий формат:

Request: /api/users
Response:
{
    "success": true,
    "message": "Get all users",
    "users": [{
        "id": 1
        "name": "User Name"
    }]
}

Request: /api/user/1/items
Response:
{
    "success": true,
    "message": "Get all items",
    "items": [{
        "id": 1
        "name": "Item Name"
    }]
}

Модели обычно форматируются следующим образом:

data class ApiResponse<T>(val success: Boolean,
                          val message: String,
                          val payload: T)
data class User(val id: String, val name: String)
data class Item(val id: String, val name: String)

Я пытался использовать okhttp3.Interceptor для анализа ответа, но я просто не могу понять, как обрабатывать динамический ключ (пользователи, предметы и т. д.).Я знаю ключ, когда делаю запрос, но я не уверен, как передать его моему Intercepter для получения значения из JSON.

1 Ответ

0 голосов
/ 03 октября 2018

Используйте @SerializedName ("message") val message: String и т. Д.

...