Java|含有泛型的JSON字符串反序列化

在调用三方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);

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月25日
下一篇 2022年6月25日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息