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

时间:2018-02-04 17:59:36

标签: 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;
}

这是faill的两个回应

{
"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

1 个答案:

答案 0 :(得分:0)

问题本身就是

  

预计BEGIN_OBJECT但是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
}