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

时间:2018-03-19 14:50:32

标签: mapping deserialization retrofit2 json-deserialization envelope

我需要编写自定义改装反序列化程序,但现在不要从哪里开始。 问题是每个响应都有自己的带包络的结果包装器。 示例:post(“getUser”)将返回User(在“Result”中)

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

和post(“getPictures”)将返回图片列表(在“Result”中)

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

和post(“getComment”)将返回评论

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

因此,想法是使用自定义反序列化器将“Get * Result”反序列化为“Result”对象,其中包含来自Result节点的errorCode,errorDesc和实际数据。

写“Get * Result”类不是一个选项,因为该类型的调用超过100个。

1 个答案:

答案 0 :(得分:0)

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