Android 如何处理通过改进2返回的对象或数组?
我遇到了一个可能返回数组或对象的API问题,下面是数据格式: 对象格式:Android 如何处理通过改进2返回的对象或数组?,android,arrays,json,jsonobject,retrofit2,Android,Arrays,Json,Jsonobject,Retrofit2,我遇到了一个可能返回数组或对象的API问题,下面是数据格式: 对象格式: { "info":"no package", "time":"04-20-2016" } 数组格式: [ { "package_id":"1234", "from":"CA", "arrive_time":"05-02-2016" }, { "package_id":"4567", "from":"DE", "arr
{
"info":"no package",
"time":"04-20-2016"
}
数组格式:
[
{
"package_id":"1234",
"from":"CA",
"arrive_time":"05-02-2016"
},
{
"package_id":"4567",
"from":"DE",
"arrive_time":"05-04-2016"
}
]
在检查了一些帖子(,)之后,我有了一些线索,它应该用Gson反序列化器或自定义转换器来处理,但我的情况似乎有点不同。那怎么处理呢?提前谢谢
更新:将示例更改为更合适的示例。Chaosphenx
我同意你的问题与你提到的这篇文章不同
第一个Json在请求中包含关于和异常的信息,第二个Json在请求成功时返回。我建议您在转换Json之前检查响应HTTP代码。如果代码是202(java.net.HttpURLConnection.HTTP_OK),是因为请求成功,API将返回第二个Json,您将转换为object。如果代码是其他代码,则是因为发生了异常,您应该以不同的方式处理它
例如:
Response<List<MyObject>> response = myResource.myMethod().execute();
switch (response.code()) {
case HTTP_OK:
return response.body();
default:
//OPS! Request has failed!
}
Response-Response=myResource.myMethod().execute();
开关(response.code()){
案例HTTP_OK:
返回响应。body();
违约:
//行动!请求失败!
}
可能重复@Exaqt是的,这是一种解决方案,但我认为使用自定义转换器或TypeAdater更合适。答案可能会帮助您通常这是一个设计糟糕的API合同的例子。如果可以对端点产生任何影响,那么最好说服开发人员将其更改为更一致的内容。嗨,事实上,这不是一个例外,而是一个成功的返回。API就是这样设计的(不是我自己设计的)。我把这个例子改成了一个更合适的例子。我认为它与我引用的链接非常相似,我就是搞不懂。所以(“信息”:“无包”)并不意味着你的请求有一个无内容的响应(代码204)?对,这是一个正常的HTTP_OK响应。