我必须使用使用JSend格式的 API。
长话短说,它使用 HTTP 状态代码来指示状态,例如:
- 200是成功
- 406 未经授权
这很好,因为我可以从中确定我的 API 请求是否成功。
但:
由于 JSend 格式有它自己的东西,它在响应时也有一个小的状态指示器,就像这样:
{
status : "success",
data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }}
}
所以它有一个“状态”字段,它还显示 API 请求是否成功。
问题:
进行改造以解析对 POJO 的响应,因此它假定响应仅包含模型并且没有成功指标,例如:(模型后实例)
{ "id" : 2, "title" : "Another blog post", "body" : "More content" }
我的问题是:
有解决方案吗?我可以预先解析状态指示符,拆分响应的“数据”(模型)部分,然后对其进行改造以仅解析该部分吗?
如果不是,我将不得不为我的每个模型添加一个“状态”属性,这显然不是一种可步行的方式,我不会那样做。
我是否应该坚持手动解析并使用ResponseBody
而不是我的模型
void onResponse(Call<T> call, Response<T> response);
类型T
参数?
因为这样我可以使用.string()
字符串并将其转换为 JSON,然后我可以手动解析我的模型,就像为它们编写解析器一样。
我真的很想使用 Retrofit 的功能进行自动解析,因为使用JSend我无法想象如果无论如何都可以正确完成这项工作。
我无法更改 API,它将是这种方式。