【发布时间】:2017-07-20 12:48:38
【问题描述】:
我必须使用使用 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,它将成为这种方式。
【问题讨论】:
标签: android json parsing retrofit jsend