Json的泛型T解析
摘要:開發中,返回的資料格式基本都是message+code+data模式,如登入介面返回資料:{"message":"登入成功","code":"100","data":[{"sex":"女","phone":"15528883251","area":"成都",&
開發中,返回的資料格式基本都是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的例項物件.