转连接:

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. python2.7练习小例子(二十三)

        23):题目:求1+2!+3!+...+20!的和.     程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = ...

  2. maven之package与install的区别

    mvn clean package 先看命令的执行过程 mvn clean install 同样先看执行过程 mvn clean package依次执行了clean.resources.compile ...

  3. c/c++不能返回局部对象和局部变量的指针或引用解释

    在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量的返回值,变量,结构体,数组等)也有注意事项.c/c++严禁返回局部变量的指针或引用. 其实函数的返回值的规则非 ...

  4. leetcode笔记--1 two-sum

    my answer: ​​​​出现的问题:倒数第二行and i !=s这种情况没有考虑进去,以后要思考全面些

  5. Vue学习(四):条件渲染

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Python-类-函数参数-takes 0 positional arguments but 1 was given

    在学习Python基础的时候,在创建某一个shownametest()函数,解析器会报错 TypeError: shownametest() takes 0 positional arguments ...

  7. Python 3基础教程32-正则

    本文介绍Python的正则,通过本文介绍和一个练习,对正则有一个基本了解就可以. # 正则表达式 ''' 正则表达式是有一些特殊字符组成,能够帮你找到一些符合一定规则的字符串 先来了解几个符号所代表的 ...

  8. python基础篇 05字典

    本节主要内容:1. 字典的简单介绍2. 字典增删改查和其他操作3. 字典的嵌套 一. 字典的简单介绍:字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中 ...

  9. JavaScript - Standard built-in objects

    标准对象分类 Value Properties 以下全局属性返回一个简单的值:它们没有属性或者方法: Infinity NaN undefined null literal Function Prop ...

  10. Unity UGUI 图片 轴对称效果 减少资源

    制作UI的过程中,为了节省资源,对称的图一般美术切一半给我们 手动拼图 有时会出现拼接处出现裂缝或重叠 调整大小时也不方便 得一块一块调整 所以就用BaseMeshEffect 的ModifyMesh ...