在调用三方API接口时,一个比较正规(正规的意思是你给别人一个这样的接口文档时,别人不会腹诽“Low 的一逼”)的三方 API 接口通常会有固定的返回结果格式。
如下是一个简单的返回结果对象:
package wanggc.json;
import lombok.Data;
@Data
public class Result<T> {
/** 状态码 */ private Integer code;
/** 状态 */ private Boolean success;
/** 返回消息 */ private String msg;
/** 数据 */ private T data;
}
一、当返回数据T是个对象时
返回数据:
{
"code": 10000,
"success": true,
"msg": "token初始化成功",
"data": {
"expire": 80215,
"token": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiM",
" Type ": "free"
}
}
数据对象:
package wanggc.json;
import lombok.Data;
@Data
public class TokenInfo {
/** 过期时间 */ private Long expire;
/** Token */ public String token;
/** 类型 */ private String type;
}
反序列化示例代码:
String content = ResourceUtil.readUtf8Str("object.json");
Type type = new TypeToken<Result<TokenInfo>>(){}.getType();
Result<TokenInfo> result = new Gson().fromJson(content, type);
二、当返回数据T是个列表时
返回数据:
{
"code": 30000,
"success": true,
"msg": "获取BOX成功",
"data": [
{
"boxId": "16f8cf7e1c6848bc83872ffcd5d328f9",
"name": "BOX1",
"serlnum": "110000089149",
"status": "1",
"projectType": "0"
}
]
}
数据对象
package wanggc.json;
import lombok.Data;
@Data
public class Box {
/**
* BOXID
*/ private String boxId;
/**
* 名称
*/ private String name;
/**
* 项目类型:0:自由项目,1:模板项目
*/ private String projectType;
/**
* 序列号
*/ private String serlnum;
/**
* 状态
*/ private String status;
}
反序列化示例代码:
String content2 = ResourceUtil.readUtf8Str("list.json");
Type type2 = new TypeToken<Result<List<Box>>>(){}.getType();
Result<List<Box>> result2 = new Gson().fromJson(content2, type2);