2016-05-30 18 views
3
public abstract class RetrofitBaseCallBack<T> implements Callback<T> { 
    @Override 
    public void onResponse(Call<T> call, Response<T> response) { 
     int responseCode = response.code(); 
     if (responseCode == Constants.ServerResponse.Code.STATUS_OK 
       || responseCode == Constants.ServerResponse.Code.STATUS_CREATED_SUCCESS 
       || responseCode == Constants.ServerResponse.Code.STATUS_IN_PROGRESS 
       || responseCode == Constants.ServerResponse.Code.STATUS_NO_CONTENT 
       || responseCode == Constants.ServerResponse.Code.STATUS_ACCEPTED) { 
      // i want to navigate to onResponseSuccess when "success":true 
      onResponseSuccess(call, response); 
     } else { 
      //i want to navigate to onResponseFailure when "success":false 
      onErrorResponse(call, response); 
     } 
    } 
    } 

    @Override 
    public void onFailure(Call<T> call, Throwable t) { 
     onRetrofitBaseCallBackFailure(call, t); 
    } 

    public abstract void onResponseSuccess(Call<T> call, Response<T> response); 

    public abstract void onResponseFailure(Call<T> call, Response response, String message); 

    public abstract void onRetrofitBaseCallBackFailure(Call<T> call, Throwable t); 
} 

我已經通過擴展改造回調來創建類。我想解析字符串的響應。在我的例子中,每個響應都會得到這種類型的JSON對象。在成功響應的情況下:如何將改造響應正文轉換爲JsonObject

{ 
    "success": true, 
    "abc": { 
    "a": 0.15, 
    "b": "Better Exchange Rate", 
    } 
} 

在失敗響應的情況下

{ 
     "success": false, 
     "abc": { 
     "a": 0.15, 
     "b": "Better Exchange Rate", 
     } 
    } 

我怎麼能轉換響應主體爲JSONObject的,這樣我可以檢查現場「成功」:和瀏覽相應的方法即onResponseSuccess(呼叫呼叫,響應響應)成功的情況下,onResponseFailure(呼叫呼叫,響應響應,字符串消息)在發生故障的情況下

回答

0

如何從response.body()中獲取JSONObject進行改進:

try { 

    JSONObject jsonObj = new JSONObject(response.body().toString()); 

} catch (JSONException e) { 

    e.printStackTrace(); 
    Log.d("TAG", "No valid json"); 

}