在調(diào)用三方API接口時,一個比較正規(guī)(正規(guī)的意思是你給別人一個這樣的接口文檔時,別人不會腹誹“Low 的一逼”)的三方 API 接口通常會有固定的返回結(jié)果格式。
如下是一個簡單的返回結(jié)果對象:
package wanggc.json; import lombok.Data; @Data public class Result { /** 狀態(tài)碼 */ private Integer code; /** 狀態(tài) */ private Boolean success; /** 返回消息 */ private String msg; /** 數(shù)據(jù) */ private T data; }
一、當(dāng)返回數(shù)據(jù)T是個對象時
返回數(shù)據(jù):
{ “code”: 10000, “success”: true, “msg”: “token初始化成功”, “data”: { “expire”: 80215, “token”: “eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiM”, “type”: “free” } }
數(shù)據(jù)對象:
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(){}.getType(); Result result = new Gson().fromJson(content, type);
二、當(dāng)返回數(shù)據(jù)T是個列表時
返回數(shù)據(jù):
{ “code”: 30000, “success”: true, “msg”: “獲取BOX成功”, “data”: [ { “boxId”: “16f8cf7e1c6848bc83872ffcd5d328f9”, “name”: “BOX1”, “serlnum”: “110000089149”, “status”: “1”, “projectType”: “0” } ] }
數(shù)據(jù)對象
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; /** * 狀態(tài) */ private String status; }
反序列化示例代碼:
String content2 = ResourceUtil.readUtf8Str(“list.json”); Type type2 = new TypeToken<Result>(){}.getType(); Result result2 = new Gson().fromJson(content2, type2);