Gson解析Json
2016-07-19 15:37
357 查看
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON 数据的书写格式是:名称/值对。
下面是使用一种谷歌提供的工具: gson,解析如下json文件:
1、逢{}创建对象
2、逢[]创建集合
3、对象中所有字段名称必须和json中的字段完全一致
4、创建类的时候、类名可以随意定义
类中调用porcessData()方法查看分析后打印的数据
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树