转连接:

http://blog.csdn.net/whx405831799/article/details/42171191

内容很好

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是XML格式或者JSON格式。然后JSON相对XML来说解析相对方便一些,所以先说说JSON的解析。

JSON的基本数据格式有这几种:

1.一个JSON对象——JSONObject

{"name":"胡小威" , "age":20 , "male":true}

2.一个JSON数组——JSONArray

[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]

3.复杂一点的JSONObject

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}

4.复杂一点的JSONArray

[

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},

{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}

]

5.来个更复杂的,这是我从爱帮公交上扒取的数据

{"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

接下来是解析部分

一、直接解析

1.{"name":"胡小威" , "age":20 , "male":true}

  1. public void parseJsonObject(String json) {
  2. try {
  3. JSONObject jsonObject = new JSONObject(json);
  4. String name = jsonObject.getString("name");
  5. int age = jsonObject.getInt("age");
  6. boolean male = jsonObject.getBoolean("male");
  7. //接下来该干嘛干嘛
  8. } catch (JSONException e) {
  9. // TODO Auto-generated catch block
  10. e.printStackTrace();
  11. }
  12. }

2.[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]

  1. public void parseJSONArray(String json) {
  2. try {
  3. JSONArray jsonArray = new JSONArray(json);
  4. for (int i = 0; i < jsonArray.length(); i++) {
  5. jsonObject = jsonArray.getJSONObject(i);
  6. String name = jsonObject.getString("name");
  7. int age = jsonObject.getInt("age");
  8. boolean male = jsonObject.getBoolean("male");
  9. //接下来该干嘛干嘛
  10. }
  11. } catch (JSONException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  15. }

3.{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}

  1. public void parseJsonPerson(String json) {
  2. try {
  3. JSONObject jsonObject = new JSONObject(json);
  4. String name = jsonObject.getString("name");
  5. int age = jsonObject.getInt("age");
  6. boolean male = jsonObject.getBoolean("male");
  7. JSONObject addressJSON = jsonObject.getJSONObject("address");
  8. String street = addressJSON.getString("street");
  9. String city = addressJSON.getString("city");
  10. String country = addressJSON.getString("country");
  11. Address address = new Address(street, city, country);
  12. Person person = new Person(name, age, male, address);
  13. } catch (JSONException e) {
  14. // TODO Auto-generated catch block
  15. e.printStackTrace();
  16. }
  17. }

4.

[

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},

{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}

]

  1. public void parseJsonArrayPerson(String json) {
  2. List<Person> persons = new ArrayList<Person>();
  3. try {
  4. jsonArray = new JSONArray(json);
  5. for (int i = 0; i < jsonArray.length(); i++) {
  6. jsonObject = jsonArray.getJSONObject(i);
  7. String name = jsonObject.getString("name");
  8. int age = jsonObject.getInt("age");
  9. boolean male = jsonObject.getBoolean("male");
  10. JSONObject addressJSON = jsonObject.getJSONObject("address");
  11. String street = addressJSON.getString("street");
  12. String city = addressJSON.getString("city");
  13. String country = addressJSON.getString("country");
  14. Address address = new Address(street, city, country);
  15. Person person = new Person(name, age, male, address);
  16. persons.add(person);
  17. Log.v("juno", person.toString());
  18. }
  19. } catch (JSONException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. }
  23. Log.v("juno", persons.toString());
  24. }

5. {"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

  1. public List<Salution> parseJSON(String str){
  2. Log.d("返回的JSON数据:", str);
  3. List<Salution> busList = new ArrayList<Salution>();
  4. try {
  5. JSONObject jsonObject = new JSONObject(str);
  6. JSONObject busesJSON = jsonObject.getJSONObject("buses");
  7. JSONArray busJSArray=busesJSON.getJSONArray("bus");
  8. for(int i=0;i<busJSArray.length();i++){
  9. JSONObject busJSObject = busJSArray.getJSONObject(i);
  10. JSONObject segsJSObject=busJSObject.getJSONObject("segments");
  11. JSONArray segJSArray=segsJSObject.getJSONArray("segment");
  12. Salution st=new Salution();
  13. for(int j=0;j<segJSArray.length();j++){
  14. if(j==0){
  15. JSONObject segJSObject = segJSArray.getJSONObject(j);
  16. st.setLine_name1(segJSObject.getString("line_name"));
  17. Log.d("line_name", segJSObject.getString("line_name"));
  18. st.setStats1(segJSObject.getString("stats"));
  19. st.setEnd_stat1(segJSObject.getString("end_stat"));
  20. st.setStart_stat1(segJSObject.getString("start_stat"));
  21. }
  22. if(j==1){
  23. JSONObject segJSObject = segJSArray.getJSONObject(j);
  24. st.setLine_name2(segJSObject.getString("line_name"));
  25. Log.d("line_name", segJSObject.getString("line_name"));
  26. st.setStats2(segJSObject.getString("stats"));
  27. st.setEnd_stat2(segJSObject.getString("end_stat"));
  28. st.setStart_stat2(segJSObject.getString("start_stat"));
  29. }
  30. }
  31. busList.add(st);
  32. }
  33. return busList;
  34. } catch (JSONException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. }
  38. return null;
  39. }

几种不同的json格式解析的更多相关文章

  1. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  2. JSON格式解析和libjson使用简介(关于cjson的使用示例)

    JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...

  3. javascript json格式解析方法

    json.parse用于从一个字符串中解析出json对象 stringify()用于从一个对象解析出字符串 var dataObj = eval("("+json+")& ...

  4. [javascript-debug-ajax-json]两种不同的json格式数据

    Bug 1: 1. 这里面的 data 只是一维数组{"state":0,"errorCode":0,"data":{"origi ...

  5. 8. js中json格式解析

    var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...

  6. 百度获取图片 json格式解析

    var h,i: integer; ss, url: string; mem: TMemoryStream; str1: tstringlist; memstr: TStringStream; idd ...

  7. SSH返回Json格式的数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  8. js中实现json格式的转换

    function person(id,name,age){ this.id=id; this.name=name; this.age=age; } var p=new person(1001,'tom ...

  9. WP8解析JSON格式(使用Newtonsoft.Json包)

    DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式. 这里举一个简单的解析JSON格式的例子(更多JSON操作): { "response&q ...

随机推荐

  1. PHP中的面向对象魔术方法大全

    1.__construct  构造方法 2.__destruct  析构方法 3.__get 获取成员值 4.__set 设定成员值 5.__isset 判断成员值 6.__unset unset成员 ...

  2. Git的使用规范(二)

    今天,我们来介绍一下git的一些命令行,来帮我们后面可以面对一些情况的时候,我们可以有一些解决的方法 1.git查看历史记录最全的命令行 git log --pretty=raw 2.对于一下的几个情 ...

  3. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(四):安装MySQL数据库

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

  4. 如何理解Java中参数传递只能传值?

    以前学习C#的时候,是完全在工作岗位上学习,一些底层较为深入的道理都不是很清楚.如今学习了Java,对于Java参数传递只能传值,不能传引用(指针)感到很困惑,在C#中不是常常说把某个引用传递到函数中 ...

  5. Git的使用和部署

    Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). 什么是版本控制系统? 没有版本控制系统 有了版本控制系统 版本 文件名 用户 说明 日期 1 service.doc 张三 ...

  6. Windows下LATEX排版论文攻略—CTeX、JabRef使用心得

    笔者刚刚接触到TEX排版,相关知识完全空白,用了两天时间学习并完成了一篇论文的完整排版. 期间遇到不少小问题,着实辛苦,分享至上,现将其解决办法总结归纳,共同学习. 一.工具介绍 TeX是一个很好排版 ...

  7. lintcode-95-验证二叉查找树

    95-验证二叉查找树 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值. 左右子树也必须是二 ...

  8. 健康领域今年开始井喷了,养老地产和私人医生这两个领域目测成为下一轮BAT在健康领域布局的竞争方向

    医疗行业做了六年多的时间,今年到了井喷的阶段,腾讯先是入股了丁香园,然后又一亿美金融资挂号网,春雨医生获得5000万美元的C轮融资,这是要上市的节奏.. 从互联网战略上,健康网和医疗网都是做资料刚开始 ...

  9. To Chromium之版本管理

    Git. 1.由于想直接submit到Chromium的官方Branch需要申请权限,目前拿不到,所以打算snapshot一个chromium版本. 本地搭建一个git的server/client,方 ...

  10. BZOJ4592 SHOI2015脑洞治疗仪(线段树)

    考虑需要资瓷哪些操作:区间赋值为0:统计区间1的个数:将区间前k个0变为1:询问区间最长全0子串.于是线段树维护区间1的个数.0的个数.最长前缀后缀全0子串即可.稍微困难的是用一个log实现将区间前k ...