您的位置 首页 java

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

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

文章来源:智云一二三科技

文章标题:Java|含有泛型的JSON字符串反序列化

文章地址:https://www.zhihuclub.com/199939.shtml

关于作者: 智云科技

热门文章

网站地图