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

Gson解析Json

2016-07-19 15:37 357 查看
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 数据的书写格式是:名称/值对。

下面是使用一种谷歌提供的工具: gson,解析如下json文件:

{"retcode":200,"data":[{"id":10000,"title":"新闻","type":1,"children":

[{"id":10007,"title":"北京","type":1,"url":"/10007/list_1.json"},{"id":10006,"title":"中

国","type":1,"url":"/10006/list_1.json"},{"id":10008,"title":"国际","type":1,"url":"/10008/list_1.json"},

{"id":10010,"title":"体育","type":1,"url":"/10010/list_1.json"},{"id":10091,"title":"生

活","type":1,"url":"/10091/list_1.json"},{"id":10012,"title":"旅游","type":1,"url":"/10012/list_1.json"},

{"id":10095,"title":"科技","type":1,"url":"/10095/list_1.json"},{"id":10009,"title":"军

事","type":1,"url":"/10009/list_1.json"},{"id":10093,"title":"时尚","type":1,"url":"/10093/list_1.json"},

{"id":10011,"title":"财经","type":1,"url":"/10011/list_1.json"},{"id":10094,"title":"育

儿","type":1,"url":"/10094/list_1.json"},{"id":10105,"title":"汽车","type":1,"url":"/10105/list_1.json"}]},

{"id":10002,"title":"专题","type":10,"url":"/10006/list_1.json","url1":"/10007/list1_1.json"},

{"id":10003,"title":"组图","type":2,"url":"/10008/list_1.json"},{"id":10004,"title":"互

动","type":3,"excurl":"","dayurl":"","weekurl":""}],"extend":

[10007,10006,10008,10014,10012,10091,10009,10010,10095]}


分类数据的封装:

使用Gson解析,对象书写方式:

1、逢{}创建对象

2、逢[]创建集合

3、对象中所有字段名称必须和json中的字段完全一致

4、创建类的时候、类名可以随意定义

domain建立分类数据的封装的对象:

public class NewsMenu {
public int retcode;
public ArrayList<NewsMenuData> data;
public ArrayList<String> extend;

//四个分类菜单信息:新闻,专题,组图,互动
public class NewsMenuData {
public String id;
public String title;
public int type;
public ArrayList<NewsTabData> children;
@Override
public String toString() {
return "NewsMenuData{" +
"type=" + type +
", id='" + id + '\'' +
", title='" + title + '\'' +
'}';
}
}

//12个页签的对象封装
public class NewsTabData {
public String id;
public String title;
public int type;
public String url;
@Override
public String toString() {
return "NewsTabData{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", type=" + type +
", url='" + url + '\'' +
'}';
}
}
}
}


类中调用porcessData()方法查看分析后打印的数据

public class MainActivity{
private NewsMenu mNewsMenu;
private void getDataFromServer() {
HttpUtils utils = new HttpUtils();
//参数:请求方式、请求的json文件、回调接口
utils.send(HttpRequest.HttpMethod.GET, GlobalConstants.CATEGORY_URL, new         RequestCallBack<String>() {
//请求成功
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
String result = responseInfo.result;
System.out.println("服务器分类数据" + result);
porcessData(result);
CacheUtils.setCache(mActivity, GlobalConstants.CATEGORY_URL, result);
}

@Override
public void onFailure(HttpException e, String s) {
e.printStackTrace();//打印错误日志
Toast.makeText(mActivity, s, Toast.LENGTH_SHORT).show();
}
});
}

public void porcessData(String json) {
Gson gson = new Gson();
//通过json和对象类,生成一个对象
mNewsMenu = gson.fromJson(json, NewsMenu.class);
System.out.println("解析结果" + mNewsMenu);`
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java gson json