使用gson解析json数据

来源:互联网 发布:常用的办公软件 编辑:程序博客网 时间:2024/04/29 00:36

这是一篇小白的文章,写这篇文章时,我只会原生的json解析,第三方的gson,fastjson,包括刚听说的jackjson都是一知半解,今天写了一个demo,使用gson来解析json数据,希望对json解析的小白有些帮助。
首先是接口,我使用的是http://v.juhe.cn/weixin/query?key=78f723dccf85aea324a3cf0daac97f35,里面的结构不变,但是内容一直在更新。
其次我用的开发工具是eclipse。
好了,开始我们的gson解析json数据路程。
第一步,json数据的格式。
在网页打开上面的链接,获取数据source,放在在线代码格式化中格式化之后成为了这样:
这里写图片描述
我想获取的是最里层的title和source两个数据,其他数据就类似了。
第二步,创建工程,导入xutils和gson的jar包(这两个jar包可以百度到)。
第三步,创建javabean。这个结构最外层是{},所以先新建个One.java的类来存储数据。

public class One {    private String reason;    private Two result;    public Two getResult() {        return result;    }    public void setResult(Two result) {        this.result = result;    }    public String getReason() {        return reason;    }    public void setReason(String reason) {        this.reason = reason;    }    @Override    public String toString() {        return "One [reason=" + reason + "]";    }}

*注意:
1.变量名字要和键值对中的键保持一致。我试过将reason换成reasona,就解析不出来了。
2.因为result对应的是一个{},所以这对大括号需要用新的javabean来存储,我定义了Two来存储。*

public class Two {    private String ps;    private List<Three> list;    public String getPs() {        return ps;    }    public void setPs(String ps) {        this.ps = ps;    }    public List<Three> getList() {        return list;    }    public void setList(List<Three> list) {        this.list = list;    }    @Override    public String toString() {        return "Two [ps=" + ps + "]";    }}

注意:因为list对应的数据是[],是一个集合,所以用list来存储。其中Three是最里层的javabean对象。

public class Three {    private String title;    private String source;    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;    }    @Override    public String toString() {        return "Three [title=" + title + ", source=" + source + "]";    }}

到此javabean对象就写完了。
第四步:mainactivity中请求数据,解析数据.

public class MainActivity extends Activity {    private String wechat_url = "http://v.juhe.cn/weixin/query?key=78f723dccf85aea324a3cf0daac97f35";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        HttpUtils httpUtils = new HttpUtils();        httpUtils.send(HttpMethod.GET, wechat_url,                new RequestCallBack<String>() {                    @Override                    public void onFailure(HttpException arg0, String arg1) {                        // TODO Auto-generated method stub                    }                    @Override                    public void onSuccess(ResponseInfo<String> arg0) {                        String result = arg0.result;                        Log.i("result", "==result===" + result);                        Gson gson = new Gson();                        One one = gson.fromJson(result, One.class);                        Log.i("one", "==one===" + one);                        Two two = one.getResult();                        List<Three> list = two.getList();                        for (int i = 0; i < list.size(); i++) {                            String title = list.get(i).getTitle();                            String source = list.get(i).getSource();                            Log.i("title", "==title===" + title);                            Log.i("source", "==source===" + source);                        }                    }                });    }}

完毕。

1 0
原创粉丝点击