Json的泛型T解析

开发中,返回的数据格式基本都是message+code+data模式,如登录接口返回数据:

 {
      "message": "登录成功", 
      "code": "100", 
      "data": [
    {
        "sex": "女", 
        "phone": "15528883251", 
        "area": "成都", 
        "signName": "二哈", 
        "age": "18", 
        "userIcon": "https://f10.baidu.com/it/u=3661269061,116126203&fm=72", 
        "realName": "樱井莉亚", 
        "userInfoID": 9
    }
]}

但是,不同接口返回的data都是不一样的,不可能每次都写带code和message的实体类,所以这个时候需要泛型了!网上关于json泛型解析的教程眼花缭乱,有些代码行数都让我瑟瑟发抖!!!自己总结一篇,遛马游泳~!

第一步:首先建立泛型接收实体类:

public class BaseResponseBean<T> {
public String message;
public String code;
public T data;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public T getData() {
    return data;
}

public void setData(T data) {
    this.data = data;
}}

第二步:根据data中的数据类型创建类

public class LoginUser {
private String sex;
private String  phone;
private String area;
private String signName;
private int age;
private String userIcon;
private String realName;
private Long userInfoID;

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public String getArea() {
    return area;
}

public void setArea(String area) {
    this.area = area;
}

public String getSignName() {
    return signName;
}

public void setSignName(String signName) {
    this.signName = signName;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getUserIcon() {
    return userIcon;
}

public void setUserIcon(String userIcon) {
    this.userIcon = userIcon;
}

public String getRealName() {
    return realName;
}

public void setRealName(String realName) {
    this.realName = realName;
}

public Long getUserInfoID() {
    return userInfoID;
}

public void setUserInfoID(Long userInfoID) {
    this.userInfoID = userInfoID;
}}

第三步:使用方式:

Type jsonType = new TypeToken<BaseResponseBean<LoginUser>>() {}.getType();
BaseResponseBean<LoginUser> bean = new Gson().fromJson(response, jsonType);
response为需要解析的json字符串,而bean.getData()就是为LoginUser的实例对象.

碎碎念:如果喜欢,对你有所帮助,给个喜欢.
更多问题加群:584275290

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,131评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,177评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,999评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,349评论 6 342
  • 今天开始看《传播学概论》,计划看3.5小时,在看了2小时后脑袋就开始跟不上了。于是放弃继续看的念头来随便写写。 严...
    Anita解忧愁阅读 321评论 0 0

友情链接更多精彩内容