首页 > 解决方案 > 改造 - 是否有可能期望字符串或对象作为响应

问题描述

我必须向 API 请求默认情况下返回一个对象,并且有一个“更多”部分可能是对象或字符串,这取决于发送的某些数据。这样创作是有目的的,当然不是我创作的。

{
    ...
    "list": {
        ...
        "more": {
            "header": {
                "a": "..."
            },
            "request": {
                ...
            }
        }
    }
}

以上是我从 API 获得的典型响应,该列表更多的是一个对象。但是,有时它会像下面那样返回,而这当然会导致我出错。

{
    ...
    "list": {
        ...
        "more": "no data available"
            
    }
}

我只是好奇是否可以处理它,因为如果响应与 POJO 不完全相同,改造会立即抛出错误?或者我可以利用 Any 来实现吗?因为如果我将 POJO 更改为 String,如果响应是一个对象,它会导致我出错。

让我们不要忘记我是如何请求响应的。我可以提供,但是这个问题有必要吗?如果是那么问我我会的。

将 POJO 更改为 Any 是不可能的,因为 Parcelize 不支持此类型。

编辑

既然有人问我会收到什么错误,那么我会在这里让它可读。

如果我将它设置为字符串,那么如果响应是字符串就可以了,但如果它是对象,它会返回。

java.lang.IllegalStateException:除了字符串,但在第 1 行第 1 列 4363 $.list.more 为 BEGIN_OBJECT

如果我将它设置为 object 但它会返回 String

java.lang.IllegalStateException:排除了一个对象,但在第 1 行第 1 列 4363 $.list.more

标签: jsonandroid-studioretrofit2

解决方案


推荐阅读