使用Gson和Retrofit2使用动态字段解析JSON

时间:2018-10-02 21:56:16

标签: android kotlin gson retrofit2

我正在使用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来解析响应,但我只是想不出如何处理动态键(用户,项目等)。我在发出请求时知道密钥,但是我不确定如何将其传达给我的拦截器,以便从JSON获取值。

1 个答案:

答案 0 :(得分:0)

使用@SerializedName(“ message”)val消息:字符串,依此类推。