JSONObject 将复杂json转化为bean

本文详细介绍了如何将复杂的JSON数据转换为Java Bean的过程,包括创建内部类、页面信息类、数据封装类及最外层类,并提供了实际的代码示例。通过逐步解析,读者可以学习到如何针对包含自定义类型和集合的复杂JSON结构进行有效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下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里面对象的值

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值