转连接:

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. SIMD数据并行(二)——多媒体SIMD扩展指令集

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

  2. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(五):测试项目

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

  3. centos linux 因别名问题引起的麻烦及解决技巧

    老男孩儿-19期 L005-13节中分享.自己整理后发到自己微博中留档. 原文:http://oldboy.blog.51cto.com/2561410/699046 实例:老男孩linux实战培训第 ...

  4. iOS开发中常见的一些异常

    iOS开发中常见的异常包括以下几种NSInvalidArgumentExceptionNSRangeExceptionNSGenericExceptionNSInternallnconsistency ...

  5. MySQL高可用之PXC安装部署(续)

      Preface       Yesterday I implemented a three-nodes PXC,but there were some errors when proceeding ...

  6. Jmeter中传递cookie值

    场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢? 在线程组下面之直接添加HTTP Cook ...

  7. iFIERO - (二)宇宙大战 Space Battle -- SpriteKit 无限循环背景Endless、SpriteKit物理碰撞、CoreMotion加速计

    本节主要讲解如何创建无限循环Endless的星空背景(如下图).玩家飞船发射子弹,监测子弹击外星敌机的SpriteKit物理碰撞并消灭敌机,以及应用iOS的CoreMotion加速计移动飞船躲避外星敌 ...

  8. 开发react的一些记录

    1.keyboard事件返回的对象SyntheticKeyboardEvent全部是null 解决方法:SyntheticKeyboardEvent的type,which,timeStamp可以得到你 ...

  9. day-13 python库实现简单非线性回归应用

    一.概率 在引入问题前,我们先复习下数学里面关于概率的基本概念 概率:对一件事发生的可能性衡量 范围:0<=P<=1 计算方法:根据个人置信区间:根据历史数据:根据模拟数据. 条件概率:B ...

  10. HDU 3699 A hard Aoshu Problem(暴力枚举)(2010 Asia Fuzhou Regional Contest)

    Description Math Olympiad is called “Aoshu” in China. Aoshu is very popular in elementary schools. N ...