如何用Gson解析复杂结构的json数据

前言:本来用原生的解析的好好的,突然有天就发神经觉得自己是一个讲究的人了,想试试别的控件,我知道还有什么fastjson等jar包可以用,因为我抱着学习的态度就没有考虑哪个效果更好,打算学习一下gjson,工作中基本都是相对来说比较复杂的类型的json数据,但是百度一下竟然没有搜到合适的,就自己试了一下,竟然成功了,记录一下吧。

json数据:

{
    "reason": "success",
    "result": {
        "list": [
            {
                "id": "wechat_20150401071581",
                "title": "号外:集宁到乌兰花的班车出事了!!!!!",
                "source": "内蒙那点事儿",
                "firstImg": "http://zxpic.gtimg.com/infonew/0/wechat_pics_-214279.jpg/168",
                "mark": "",
                "url": "http://v.juhe.cn/weixin/redirect?wid=wechat_20150401071581"
            },
           {
                "id": "wechat_20150402003471",
                "title": "首例男性生子成功,女人们开心吗?",
                "source": "上街吧",
                "firstImg": "http://zxpic.gtimg.com/infonew/0/wechat_pics_-214359.jpg/168",
                "mark": "",
                "url": "http://v.juhe.cn/weixin/redirect?wid=wechat_20150402003471"
            }
        ]
    }
}
冒号直接接着字符串的是String的格式,{}的是object格式,【】的是数组的格式。

需要3个类:

1:最外层的对象包含了reason和result,对应的是:

public class Weixin {
private String reason;
private Result result;
public String getReason() {
	return reason;
}
public void setReason(String reason) {
	this.reason = reason;
}
public Result getResult() {
	return result;
}
public void setResult(Result result) {
	this.result = result;
}
}


2:result对象包含集合:

public class Result {
	private ArrayList<ResultItem>list;

	public ArrayList<ResultItem> getList() {
		return list;
	}

	public void setList(ArrayList<ResultItem> list) {
		this.list = list;
	}
	
}


3:集合包含的对象:

public class ResultItem {
private String  id;
private String title;
private String source;
private String firstImg;
private String mark;
private String url;
public String getId() {
	return id;
}
public void setId(String id) {
	this.id = id;
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public String getSource() {
	return source;
}
public void setSource(String source) {
	this.source = source;
}
public String getFirstImg() {
	return firstImg;
}
public void setFirstImg(String firstImg) {
	this.firstImg = firstImg;
}
public String getMark() {
	return mark;
}
public void setMark(String mark) {
	this.mark = mark;
}
public String getUrl() {
	return url;
}
public void setUrl(String url) {
	this.url = url;
}

}

这样得到json数据result以后:

Gson gson = new Gson();  
Weixin w = gson.fromJson(result, Weixin.class);//此处可以得到已经赋值的Weixin对象。
Log.e("TAG", "gson:" +w.getReason());//此处可以得到reason的值。

这就是我的方法,如果你有更简便的方法记得留言告诉我哦!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值