如何处理退货可以是OBJECT或ARRAY with Retrofit 2?

问题描述 投票:2回答:1

我遇到了一个可以返回ARRAY或OBJECT的API的问题,下面是数据格式:

对象格式:

{
    "info":"no package",
    "time":"04-20-2016"
}

ARRAY格式:

[
   {
      "package_id":"1234",
      "from":"CA",
      "arrive_time":"05-02-2016"
   },
   {
      "package_id":"4567",
      "from":"DE",
      "arrive_time":"05-04-2016"
   }
]

在检查了一些帖子(Custom converter for Retrofit 2Multiple converters with Retrofit 2)后,我有一些线索,它应该用Gson解串器或自定义转换器处理,但我的情况似乎有点不同。那怎么处理呢?提前致谢。

更新:将示例更改为更合适的示例。

android arrays json jsonobject retrofit2
1个回答
0
投票

Chaosphinx

我同意您的问题与您引用的帖子不同。

您的第一个Json在您的请求中有关于和异常的信息,并且在您的请求成功时返回第二个。我建议你在转换Json之前检查Response HTTP Code。如果代码是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!
            }
© www.soinside.com 2019 - 2024. All rights reserved.