模型
public class Result<T> {
private String code;
private String msg;
private T data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
Api
结果
成功(数据可能是字符串,列表等)
{
"code":200,
"msg":"success",
"data":{
"name":"zhangsan",
"age":18
}
}
失败
{
"code":401,
"msg":"success",
"data":[]
}
或
{
"code":401,
"msg":"success",
"data":""
}
当结果为失败时,发生异常
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 23 path $.data
我只想跳过“数据”字段,因为在失败结果时它未被使用, 并保持其他领域。不例外
可以使用TypeAdapterFactory TypeAdapter跳过数据吗?我该怎么做???
答案 0 :(得分:0)
问题出在您的模型中。没错,这是真的。
public class JsonData{
@SerializedName("code")
private Long mCode;
@SerializedName("data")
private Data mData;
@SerializedName("msg")
private String mMsg;
public Long getCode() {
return mCode;
}
public void setCode(Long code) {
mCode = code;
}
public Data getData() {
return mData;
}
public void setData(Data data) {
mData = data;
}
public String getMsg() {
return mMsg;
}
public void setMsg(String msg) {
mMsg = msg;
}
}
public class Data {
@SerializedName("age")
private Long mAge;
@SerializedName("name")
private String mName;
public Long getAge() {
return mAge;
}
public void setAge(Long age) {
mAge = age;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
}
答案 1 :(得分:0)
您可以对code
:
If (code == 200){
// success logic
}
else if(code == 401){
// failure logic
}
否则,如果您使用的是Retrofit
库,则应自动转到success
和failure
。你不需要照顾它。使用this链接从服务器获取的Response
创建Pojo类。