摘要:開(kāi)發(fā)中,返回的數(shù)據(jù)格式基本都是message+code+data模式,如登錄接口返回?cái)?shù)據(jù):{"message":"登錄成功","code":"100","data":[{"sex":"女","phone":"15528883251","area":"成都",&
開(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ì)象.