Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何处理通过改进2返回的对象或数组?_Android_Arrays_Json_Jsonobject_Retrofit2 - Fatal编程技术网

Android 如何处理通过改进2返回的对象或数组?

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

我遇到了一个可能返回数组或对象的API问题,下面是数据格式:

对象格式:

{
    "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响应。