我必須使用使用JSend格式的API。使用JSend格式將JSON響應轉換爲POJO並進行改造?
它是使用HTTP狀態代碼指示般的地位長話短說:
- 200是成功
- 406是未經授權的
這是很好的,因爲我可以從這個判斷我API請求成功與否。
但是:
由於JSEND格式有它自己的事情,它也有一點點的狀態指示燈在響應就像這樣:
{
status : "success",
data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }}
}
所以它有一個「狀態」字段,也表明API請求是否成功。
問題:
改造作出解析到POJO的響應,因此假定響應只包含模型和成功沒有指標,只是這樣的,例如:(A Post模型實例)
{ "id" : 2, "title" : "Another blog post", "body" : "More content" }
我的問題是:
有沒有解決方案呢? 我是否可以預分析狀態指示器,拆分響應中的'數據'(模型)部分並對其進行改進以僅解析該部分?
如果沒有,我將不得不爲每個模型添加一個「狀態」屬性,這顯然不是一個可行的方法,我不會那樣做。
如果我只是堅持用手工解析,並在
void onResponse(Call<T> call, Response<T> response);
使用ResponseBody
,而不是我的模型爲T
型放慢參數?
因爲這樣我可以使用.string()
並將字符串轉換爲JSON,之後我可以手動解析我的模型,就像爲它們編寫解析器一樣。
我真的很喜歡使用Retrofit的功能進行自動分析,因爲JSend我無法想象如果可以的話,怎麼可能做到這一點。
我不能改變API它會這樣。
優雅的解決方案。謝謝。 –
我很高興聽到這一點,也感謝賞金@AdamVarhegyi – faranjit