如下json
{"code":0,"msg":"成功","data":{"list":[{"imei":"d451b75bc37bcc583100da721e3ab00c","downBegin":"2018-11-06 23:59:39","platform":2,"channel":1,"adPlace":1,"adId":"178963","adName":"1019大图08","planId":"43055","planName":"2户1019大图-4989"},{"imei":"552df99eca58d0af2a14f9123c063c0e","downBegin":"2018-11-06 23:59:31","platform":2,"channel":1,"adPlace":1,"adId":"178963","adName":"1019大图08","planId":"43055","planName":"2户1019大图-4989"}],"pageInfo":{"pageNum":1,"pageSize":2,"totalNumber":2730,"totalPage":1365}}}
如图:
将此段json转为bean
首先根据json封装bean
由里向外封装,首先封装list里面的对象---》pageInfo--》data--》最外层
1、list里面的对象
public class ResultList {
private String imei;
private String downBegin;
private Integer platform;
private Integer channel;
private Integer adPlace;
private String adId;
private String adName;
private String planId;
private String planName;
public String getImei() {
return imei;
}
public void setImei(String imei) {
this.imei = imei;
}
public String getDownBegin() {
return downBegin;
}
public void setDownBegin(String downBegin) {
this.downBegin = downBegin;
}
public Integer getPlatform() {
return platform;
}
public void setPlatform(Integer platform) {
this.platform = platform;
}
public Integer getChannel() {
return channel;
}
public void setChannel(Integer channel) {
this.channel = channel;
}
public Integer getAdPlace() {
return adPlace;
}
public void setAdPlace(Integer adPlace) {
this.adPlace = adPlace;
}
public String getAdId() {
return adId;
}
public void setAdId(String adId) {
this.adId = adId;
}
public String getAdName() {
return adName;
}
public void setAdName(String adName) {
this.adName = adName;
}
public String getPlanId() {
return planId;
}
public void setPlanId(String planId) {
this.planId = planId;
}
public String getPlanName() {
return planName;
}
public void setPlanName(String planName) {
this.planName = planName;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.planName;
}
}
2、pageInfo
public class Page {
private Integer pageNum;
private Integer totalNumber;
private Integer totalPage;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getTotalNumber() {
return totalNumber;
}
public void setTotalNumber(Integer totalNumber) {
this.totalNumber = totalNumber;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
}
3、data
public class ResultDataPage {
private List<ResultList> list;
private Page pageInfo;
public List<ResultList> getList() {
return list;
}
public void setList(List<ResultList> list) {
this.list = list;
}
public Page getPageInfo() {
return pageInfo;
}
public void setPageInfo(Page pageInfo) {
this.pageInfo = pageInfo;
}
}
4、最外层
public class ResultData {
private Integer code;
private String msg;
private ResultDataPage data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public ResultDataPage getData() {
return data;
}
public void setData(ResultDataPage data) {
this.data = data;
}
}
转化代码部分,这部分是json转bean的代码
//http 请求,返回的json
result = HttpClientUtil.httpPost(ApiClientUrl.VIVO_URL_IMEI,
params);
JSONObject jsStr = JSONObject.fromObject(result);
JsonConfig jsonConfig = new JsonConfig(); //解析含有日期的json 串
jsonConfig.setRootClass(VivoImeiReport.class);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("list", ResultList.class);
JSONUtils.getMorpherRegistry().registerMorpher(
new DateMorpher(new String[] { "yyyy-MM-dd hh:mm:ss",
"yyyy-MM-dd hh:mm:ss" }));
ResultData resultData = (ResultData) JSONObject
.toBean(jsStr, ResultData.class,classMap);
需要注意的是此处 我加入了一个classMap,是因为当其中属性有类似List , Map ,ArrayList、自定义的类型,如List<ResultList> list, 就不可以了。 会报错:MorphDynaBean cannot be cast to con.test……/,或者你获取不到list里面对象的值