在调用三方API接口时,一个比较正规(正规的意思是你给别人一个这样的接口文档时,别人不会腹诽“Low 的一逼”)的三方 API 接口通常会有固定的返回结果格式。
如下是一个简单的返回结果对象:
package wanggc.json; import lombok.Data; @Data public class Result { /** 状态码 */ 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(){}.getType(); Result 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>(){}.getType(); Result result2 = new Gson().fromJson(content2, type2);