您的位置:首页 > Web前端 > JavaScript

使用gson解析json数据

2017-01-09 11:52 288 查看
这是一篇小白的文章,写这篇文章时,我只会原生的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);
}
}
});
}

}


完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gson json