我的 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/