使用JSend格式的Retrofit将JSON响应转换为POJO?

使用JSend格式的Retrofit将JSON响应转换为POJO?,第1张

概述我必须使用JSend格式的API.长话短说,它使用HTTP状态代码来指示状态,例如:>200是成功>406未经授权很好,因为我可以据此确定我的API请求是否成功.但:由于JSend格式是它自己的东西,因此它在响应中还具有一些状态指示器,如下所示:{status:"success",data:{"post"

我必须使用JSend格式的API.

长话短说,它使用http状态代码来指示状态,例如:

> 200是成功
> 406未经授权

很好,因为我可以据此确定我的API请求是否成功.

但:

由于Jsend格式是它自己的东西,因此它在响应中还具有一些状态指示器,如下所示:

{    status : "success",    data : { "post" : { "ID" : 2, "Title" : "Another blog post", "body" : "More content" }}}

因此,它具有一个“状态”字段,该字段还显示API请求是否成功.

问题:

进行了改进以解析对POJO的响应,因此假定响应仅包含Model,并且没有成功指示符,例如,例如:(一个后期Model实例)

{ "ID" : 2, "Title" : "Another blog post", "body" : "More content" }

我的问题是:

有解决方案吗?
我是否可以预解析状态指示器,拆分响应的“数据”(模型)部分,并对其进行改造以仅解析该部分?

如果不是这样,我将不得不向每个模型添加“状态”属性,这显然不是一种可行的方法,我不会这样做.

我应该坚持手动解析并使用ResponseBody代替我的Models吗?

voID onResponse(Call T呼叫,Response T响应); T型参数?

因为以这种方式,我可以使用.string()并将字符串转换为JsON,然后我可以手动解析模型,就像为它们编写解析器一样.

我真的很想使用Retrofit的功能进行自动解析,因为对于JSend,我根本无法想象这将如何正确完成.

我无法更改API,它将采用这种方式.

解决方法:

这是我的回应课程.

public class Response<T> implements Serializable {private T data;private String status;public T getData() {    return data;}public voID setData(T data) {    this.data = data;}public String getStatus() {    return status;}public voID setStatus(String status) {    this.status = status;}

}

这是我的API调用.

Callback<com.shippn.API.models.Response<T>> callback = new Callback<com.shippn.API.models.Response<T>>() {        @OverrIDe        public voID onResponse(Call<com.shippn.API.models.Response<T>> call, Response<com.shippn.API.models.Response<T>> response) {            checkStatus(response.body());        }        @OverrIDe        public voID onFailure(Call<com.shippn.API.models.Response<T>> call, Throwable t) {            fail();        }    };    call.enqueue(callback);

T参数是来自API的数据类型.我的意思是,如果要获取Post类型的数据,则将Post插入T中.如果要获取ArrayList< Post&gt ;,放置ArrayList< Post>.

如果您的API响应中的data字段为空或null,则Response.data将为null或为空,它不会引发异常.

当您从API获得响应时,请首先检查Response.status是否为“成功”.如果是“成功”,则从Response中获取数据,否则请采取错误措施.

总结

以上是内存溢出为你收集整理的使用JSend格式的Retrofit将JSON响应转换为POJO?全部内容,希望文章能够帮你解决使用JSend格式的Retrofit将JSON响应转换为POJO?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存