改造自定义反序列化器 - 对象作为信封
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 原始回复。
我需要编写自定义改造解串器,但不知道从哪里开始。 问题是每个响应都有自己的带有信封的结果包装器。 示例: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 原始回复。