原文地址:http://blog.csdn.net/whx405831799/article/details/42171191

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}

java:
public void parseJsonObject(String json)
{  try {  JSONObject jsonObject = new JSONObject(json);  String name = jsonObject.getString("name");  int age = jsonObject.getInt("age");  boolean male = jsonObject.getBoolean("male");  //接下来该干嘛干嘛  } catch (JSONException e){    e.printStackTrace();  }
}js:
success: function(result)
{var name = result.name;var age = result.age;var male = result.male;
}

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

java:
public void parseJSONArray(String json)
{  try {  JSONArray jsonArray = new JSONArray(json);  for (int i = 0; i < jsonArray.length(); i++) {  jsonObject = jsonArray.getJSONObject(i);  String name = jsonObject.getString("name");  int age = jsonObject.getInt("age");  boolean male = jsonObject.getBoolean("male");  //接下来该干嘛干嘛  }  } catch (JSONException e) { e.printStackTrace();  }
}js:
success : function(result)
{for( var key in result ){var data = new Object();data = result[key];var name = data.name;var age = data.age;var male = data.male;}
}

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

public void parseJsonPerson(String json)
{  try{  JSONObject jsonObject = new JSONObject(json);  String name = jsonObject.getString("name");  int age = jsonObject.getInt("age");  boolean male = jsonObject.getBoolean("male");  JSONObject addressJSON = jsonObject.getJSONObject("address");  String street = addressJSON.getString("street");  String city = addressJSON.getString("city");  String country = addressJSON.getString("country");  Address address = new Address(street, city, country);  Person person = new Person(name, age, male, address);  } catch (JSONException e) {   e.printStackTrace();  }  }

4.[{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}]

public void parseJsonArrayPerson(String json)
{  List<Person> persons = new ArrayList<Person>();  try {  jsonArray = new JSONArray(json);  for (int i = 0; i < jsonArray.length(); i++) {  jsonObject = jsonArray.getJSONObject(i);  String name = jsonObject.getString("name");  int age = jsonObject.getInt("age");  boolean male = jsonObject.getBoolean("male");  JSONObject addressJSON = jsonObject.getJSONObject("address");  String street = addressJSON.getString("street");  String city = addressJSON.getString("city");  String country = addressJSON.getString("country");  Address address = new Address(street, city, country);  Person person = new Person(name, age, male, address);  persons.add(person);  Log.v("juno", person.toString());  }  } catch (JSONException e) {   e.printStackTrace();  }  Log.v("juno", persons.toString());
}

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"}]}}

public List<Salution> parseJSON(String str){  Log.d("返回的JSON数据:", str);  List<Salution> busList = new ArrayList<Salution>();  try {  JSONObject jsonObject = new JSONObject(str);  JSONObject busesJSON = jsonObject.getJSONObject("buses");  JSONArray busJSArray=busesJSON.getJSONArray("bus");  for(int i=0;i<busJSArray.length();i++){  JSONObject busJSObject = busJSArray.getJSONObject(i);  JSONObject segsJSObject=busJSObject.getJSONObject("segments");  JSONArray segJSArray=segsJSObject.getJSONArray("segment");                Salution st=new Salution();  for(int j=0;j<segJSArray.length();j++){  if(j==0){  JSONObject segJSObject = segJSArray.getJSONObject(j);  st.setLine_name1(segJSObject.getString("line_name"));  Log.d("line_name", segJSObject.getString("line_name"));  st.setStats1(segJSObject.getString("stats"));  st.setEnd_stat1(segJSObject.getString("end_stat"));  st.setStart_stat1(segJSObject.getString("start_stat"));  }  if(j==1){  JSONObject segJSObject = segJSArray.getJSONObject(j);  st.setLine_name2(segJSObject.getString("line_name"));  Log.d("line_name", segJSObject.getString("line_name"));  st.setStats2(segJSObject.getString("stats"));  st.setEnd_stat2(segJSObject.getString("end_stat"));  st.setStart_stat2(segJSObject.getString("start_stat"));  }  }  busList.add(st);      }  return busList;  } catch (JSONException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  return null;  }

------------------------------------------------------------------------------------其他------------------------------------------------------------------------------------------

二、使用JSON类库Gson 来解析JSON

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI

google-gson-1.7.1-release.zip

再把gson-1.7.jar copy到libs

可以使用两种方法解析

①、通过获取JsonReader对象解析JSON数据:

String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";
try{  JsonReader reader = new JsonReader(new StringReader(jsonData));  reader.beginArray();  while(reader.hasNext()){  reader.beginObject();  while(reader.hasNext()){  String tagName = reader.nextName();  if(tagName.equals("username")){  System.out.println(reader.nextString());  }  else if(tagName.equals("userId")){  System.out.println(reader.nextString());  }  }  reader.endObject();  }  reader.endArray();
}
catch(Exception e){  e.printStackTrace();
}  

②、通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作

Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {  User user = (User) iterator.next();  System.out.println(user.getUsername());  System.out.println(user.getUserId());
}

几种不同格式的json数据及解析相关推荐

  1. 利用百度APIStoreSDK获取Json数据并解析加载到ListView上

    效果图(这里只是截取了List中的一项): 一.:登录百度ApiStore,获取移动sdk Android版(同时有使用文档和示例),将jar包导入到项目中 Android Studio请在放入lib ...

  2. Android studio获取服务器端json数据并解析

    最近在做Android的一个项目,涉及到Android studio与服务器端通信问题,在网上看了很多,找到了一些解决办法,这篇文章就简单介绍一下如何获取以及向服务器上传json数据. 在这个项目中, ...

  3. JavaScript——JSON数据和解析

    1.JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufacture ...

  4. js html 处理json数据,js 解析JSON数据

    链接原文转自:http://www.w3cschool.cn/json/xumd1piw.html http://www.cnblogs.com/zoumiaomiao/p/4909539.html ...

  5. C#获取http请求的JSON数据并解析

    文章目录 1️⃣ C#获取http请求的JSON数据并解析 1.1 获取http的JSON数据 1.2 解析JSON数据 优质资源分享 C#获取http请求的JSON数据并解析,第一步,先拿到http ...

  6. Flutter 项目编写 第三方插件库文件引入,本地图片 json数据引入解析

    FlutterDemo是如何一步一步搭建起来的 最初就是直接新建flutter项目,就会自动建立一个入门项目.(开始项目前,需先学习Dart语言) flutter项目代码都在lib目录下编写: 新建包 ...

  7. 在php中怎么解析json数据,php解析json数据

    在我们使用编程语言的时候,对于数据的格式会出现不能直接使用的情况,所以就会有解析的操作.在php中有专门解析json的函数,那就是json_decode().想要进一步的运用这个函数,我们还需要对它的 ...

  8. c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库

    CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...

  9. android json.out,Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  10. swift php json解析,Swift 4.0 | JSON数据的解析和编码

    文 / 菲拉兔 自己撸的图 要求: Platform: iOS8.0+ Language: Swift4.0 Editor: Xcode9 [问题补充2017-09-28] 最近我发现了一个问题:在S ...

最新文章

  1. (转)如何修改maven的默认jdk版本
  2. PL/SQL Developer的调试存储过程
  3. python repl_asyncio REPL(Python 3.8)
  4. 从库中图片逐帧插入到场景
  5. C/C++ http协议发送字段,文件,单个和多张图片
  6. 焦旭超 201771010109《面向对象程序设计课程学习进度条》
  7. 拓端tecdat|卡尔曼滤波器:用R语言中的KFAS建模时间序列
  8. 创建git仓库和常用的命令
  9. MCMC算法原理及其实例
  10. 人工智能培训的过去与现在
  11. 电脑开启移动热点手机一直显示正在获取ip
  12. 大二Web课程设计——张家界旅游网站设计与实现(HTML+CSS+JavaScript)
  13. Java面对对象程序设计——面对对象
  14. python中正则表达式的简单应用_Python正则表达式详细应用
  15. NeurIPS 2022 | 北大阿里提出BEVFusion:激光雷达-相机融合新框架
  16. 如何设计一个网页爬虫
  17. Win10C盘满了怎么清理?如何清理电脑C盘?
  18. 云计算在互动电视上的商业应用
  19. 国内主要遥感卫星数据介绍
  20. UG NX 12 坐标系

热门文章

  1. 密码学的数学基础2-同余
  2. Windows下强制删除文件或文件夹
  3. G - The Tourist Guide UVA - 10099
  4. STM32 ESP8266 无线模块使用
  5. android系统9有OTG功能吗,你的Android手机有OTG功能吗?没有我教你!
  6. 面向对象继承 C#编程记录
  7. 第一台电子计算机诞生于1944,(),第一台数字电子计算机问世。A、1944年B、1945年C、1946年 - 众答网问答...
  8. React Native 参考资料 (转自简书)
  9. LittleVGL v7.5.0在STM32F103x上的移植
  10. 管理必备认知--员工素质模型:能愿知模型