改造自定义反序列化器 - 对象作为信封

Retrofit custom deserializer - object as envelope

我需要编写自定义改造解串器,但不知道从哪里开始。 问题是每个响应都有自己的带有信封的结果包装器。 示例:post("getUser") 将 return 用户(在 "Result" 中)

{
    "GetUserResult": {
        "ErrorCode": 0,
        "ErrorDescription": null,
        "Result": {
             "id": ...
        }
    }
}

和 post("getPictures") 将 return 图片列表(在 "Result" 中)

{
    "GetPicturesResult": {
        "ErrorCode": 0,
        "ErrorDescription": null,
        "Result": [ { ... } ]
    }
}

和post("getComment") 会return评论

{
    "id": ...
    ...
}

因此,想法是使用自定义反序列化器将 "Get*Result" 反序列化为 "Result" 带有 errorCode、errorDesc 和来自结果节点的实际数据的对象。

写 "Get*Result" 类 不是一个选项,因为有超过 100 个不同的调用类型。

解决了获取请求路径的最后一部分并在末尾添加 "Result" 的拦截器,检查响应是否具有 "Get*Result" JSON 元素和 returns 其值,否则,returns 原始回复。