Json的泛型T解析

開(kāi)發(fā)中,返回的數(shù)據(jù)格式基本都是message+code+data模式,如登錄接口返回?cái)?shù)據(jù):

 {
      "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都是不一樣的,不可能每次都寫(xiě)帶code和message的實(shí)體類(lèi),所以這個(gè)時(shí)候需要泛型了!網(wǎng)上關(guān)于json泛型解析的教程眼花繚亂,有些代碼行數(shù)都讓我瑟瑟發(fā)抖!!!自己總結(jié)一篇,遛馬游泳~!

第一步:首先建立泛型接收實(shí)體類(lèi):

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;
}}

第二步:根據(jù)data中的數(shù)據(jù)類(lèi)型創(chuàng)建類(lèi)

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()就是為L(zhǎng)oginUser的實(shí)例對(duì)象.

碎碎念:如果喜歡,對(duì)你有所幫助,給個(gè)喜歡.
更多問(wèn)題加群:584275290

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,562評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,697評(píng)論 18 399
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,415評(píng)論 6 13
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評(píng)論 6 342
  • 今天開(kāi)始看《傳播學(xué)概論》,計(jì)劃看3.5小時(shí),在看了2小時(shí)后腦袋就開(kāi)始跟不上了。于是放棄繼續(xù)看的念頭來(lái)隨便寫(xiě)寫(xiě)。 嚴(yán)...
    Anita解憂愁閱讀 298評(píng)論 0 0

友情鏈接更多精彩內(nèi)容