我必须使用使用JSend格式的API 。
长话短说,它使用HTTP状态代码来指示状态,例如:
这很好,因为我可以据此确定我的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
而不是我的模型吗?
void onResponse(Call<T> call, Response<T> response);
对于T
类型参数?
因为这样可以使用.string()
字符串并将其转换为JSON,然后可以手动解析模型,就像为它们编写解析器一样。
我真的很想使用Retrofit的功能来进行自动解析,因为有了JSend,我根本无法想象这将如何正确完成。
我无法更改API,它将采用这种方式。
这是我的Response
课。
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
insted的数据T
。如果你想得到ArrayList<Post>
放ArrayList<Post>
。
如果data
api响应中的field为空或null,则为Response.data
null或空,则不会引发异常。
当您从api获得响应时,请首先检查Response.status
它是否“成功”。如果是“成功”
Response
,则从中获取数据,如果不是,则执行错误操作。
null 这是很好的,因为我可以确定我的API请求是否成功。 但是: 由于JSend格式有它自己的东西,它在响应时也有一个小的状态指示器,如下所示: 我是否应该坚持手动解析并使用而不是我的模型 对于类型paramter? 因为这样,我可以使用并将字符串转换为JSON,然后我可以手动解析模型,就像为它们编写解析器一样。
我的JSON的格式是: “abc”是变量,“field_1”和“value”是字段名。我希望Java中的一个类以某种格式存储这个JSON,例如: 我的班级。JAVA 我想要我的班级。java,因为将来我可能想在JSON响应中添加更多元数据。这是一个复杂的对象映射,但我不知道我的类应该是什么样子来存储JSON响应。
使用此JSON,自动JSON到POJO严重失败。 请注意,不同请求的项目数量不同。在这里,我将包含两项JSON响应。 这个JSON对象的POJO会是什么样子?
我对Spark SQL很陌生。在执行一项培训任务时,我遇到了以下问题,无法找到答案(以下所有示例都有点愚蠢,但出于演示目的,应该仍然可以)。 我的应用程序读取拼花文件并根据其内容创建数据集: 数据集。show()调用结果: 然后,我将数据集转换为一个新的数据集,其中包含Person类型: 哪里 最后,当我显示数据集的内容时,我希望看到 然而,我明白了 这是toString()方法的结果,而标头是正
问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。
问题内容: 我必须将我们的j2ee应用程序与REST Web服务集成在一起。我想使用JBoss的RestEasy JAX- RS实现。Web服务返回JSON格式的数组。我有这段代码: 我可以将此“响应”对象映射到使用RestEasy吗?谢谢 问题答案: 如果您的JSON提供程序能够转换为适当的实体,那么可以。您在代码中调用的方法具有重载的版本,该版本接受将结果转换为的实体类。由于序列化某些集合的实