大佬教程收集整理的这篇文章主要介绍了android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class ApiResponse<T> { public Boolean success; public T data; }
data field是一个JSON对象,包含所有有价值的信息.当然,对于不同的请求,它们是不同的.所以我的改造界面如下所示:
@GET(...) Observable<ApiResponse<User>> getUser();
当我想处理响应时我需要做的事如:
response.getData().getUserId();
我真的不需要那个布尔成功字段,我想省略它,所以我的改装界面可能如下所示:
@GET(...) Observable<User> getUser();
在Gson可以这样做吗?或者可能是一个整洁的Rx功能,它会自动转换它?
编辑:
示例json:
{ "success": true,"data": { "id": 22,"firstname": "Jon","lastname": "SNow" } }
编辑2:
我已经用改装拦截器做了这个,我手动修改响应体.它有效,但如果您有任何其他建议,请发布它们:)
响应包装器:
public class ApiResponse<T> { private Boolean success; private T data; private ApiError error; }
public class ApiError { privatE int code; }
成功为假时抛出此异常:
public class ApiException extends RuntimeException { private final ApiError apiError; private final transient ApiResponse<?> response; public ApiException(ApiResponse<?> responsE) { this.apiError = response.getError(); this.response = response; } public ApiError getApiError() { return apiError; } public ApiResponse<?> getResponse() { return response; } }
和一个变压器:
protected <T> Observable.Transformer<ApiResponse<T>,T> applyschedulersAndExtractData() { return observable -> observable .subscribeOn(schedulers.io()) .observeOn(Androidschedulers.mainThread()) .map(tApiResponse -> { if (!tApiResponse.issuccess()) throw new ApiException(tApiResponsE); else return tApiResponse.getData(); }); }@H_502_4@ @H_502_4@
以上是大佬教程为你收集整理的android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型全部内容,希望文章能够帮你解决android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。