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

    xiaoxiao2021-08-16  120

    前言:本来用原生的解析的好好的,突然有天就发神经觉得自己是一个讲究的人了,想试试别的控件,我知道还有什么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的值。

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

    转载请注明原文地址: https://ju.6miu.com/read-676466.html

    最新回复(0)