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

时间:2016-04-19 09:53:34

标签: android arrays json jsonobject retrofit2

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

OBJECT格式:

ContextLogHandler

ARRAY格式:

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

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

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

1 个答案:

答案 0 :(得分: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!
            }