java - 在改造中处理超过 1 个响应

标签 java android retrofit

我的 api 响应中有 2 个响应,如果数据正确,则第一个响应成功,如果数据不正确,则另一个响应,我无法使用我的 pojo 类处理它,这是我的类

public class AirCraftSearchResponse {

@SerializedName("Data")
@Expose
private Data data;
@SerializedName("Message")
@Expose
private Object message;
public Data getData() {
    return data;
}

public void setData(Data data) {
    this.data = data;
}

public Object getMessage() {
    return message;
}

public void setMessage(Object message) {
    this.message = message;
}

这是fail的两个响应

{
"Success": false,
"Message": "Could not convert string to DateTime: 2019-12-08T0000:00. Path 'Legs[0].DateTime', line 1, position 1185.",
"Data": [],
"total": 0
}

成功响应是

{
"Success": true,
"Message": "",
"Data": {},
"total": 0
}

当我做出响应并获得成功时,不会发生任何问题,因为我的 pojo 类具有相同的响应对象,当我失败时,它会产生异常,我无法处理或获取它的消息,因为它会转到 onFailure 方法 当我打印它的消息时,我得到这一行

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 143 path $.Data

最佳答案

问题本身说明

Expected BEGIN_OBJECT but was BEGIN_ARRAY

您的键值类型“数据”存在问题。如果成功,您将发送对象,即 {};如果失败,您将发送一个数组,即 []。尝试发送失败的对象 {},您的问题就会得到解决。

下面的正确格式表示失败

{
 "Success": false,
 "Message": "Could not convert string to DateTime: 2019-12-08T0000:00. 
 Path 'Legs[0].DateTime', line 1, position 1185.",
 "Data": {},
 "total": 0
}

关于java - 在改造中处理超过 1 个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611307/

相关文章:

java - 从 IntelliJ Java 自动化 C++ 调试

java - 从一项 Activity 切换到另一项 Activity 时创建进度对话框

javascript - 如何在不再次发送所有 APK 的情况下更新我的应用程序?

android - NetworkInfo TYPE_MOBILE_MMS 功能

java - 从 recyclerview 中的 editText 进行搜索,我使用改造从 API 获取项目

java - 如何从线程分配变量

Java exec 在 64 位 Windows 中不起作用

java - 为具有多个 jar 的 android-eclipse 项目配置 ProGuard

java - 改造 - 当我调用 Intent 打开新 Activity 时应用程序崩溃

android - 如何为Android API编写单元测试用例?