解析Json

  有了请求,自然会有响应,那我们该如何解析服务端响应返回给我们的Json数据呢?

  了解什么是Json

  JSON(JavaScript object notation)是一种轻量级的数据交换格式。它是基于ECMAscript的一个子集。JSON采用完全独立于语言的文本格式,但是也是用的类似于c语言家族的习惯(包括c、c++、c#、java、javascript、perl、Python等)。这些特性是JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

  JSON的语法规则

  JSON是JavaScript对象表示语法的子集。

  1) 数据在键值对中。

  2) 数据由逗号分隔

  3) 花括号保存对象

  4) 方括号保存数组

  JSON的值可以是?

  1) 数字(整数或浮点数)

  2) 字符串(在双引号中)

  3) 逻辑值(true或false)

  4) 数组(在方括号中)

  5) 对象(在花括号中)

  6) null

  代码演示,如何解析JSON格式数据?

  1) 使用之前演示HttpGet和HttpPost时,已经写好的可以得到从服务器返回的JSON格式的字符串的代码。

  调用parseData()方法,传递参数result。如下图:

得到的需要解析的JSON数据如下图所示:

  2) 根据分析JSON数据的格式,这里可以看出JSON格式解析到最里层,得到的是一组一组的对象,对象里面包含name和sex属性。

  所以,在这里构造出一个对应该对象的实体类,并提供对外访问的getter和setter方法。

  3) 这里我们重写tostring()方法,通过调用此方法,可以打印出该对象的name值和sex值,这样做是为了待会儿打印出对象的属性值,展示效果。

  4) 由于得到的最里层的member对象的集合,这里采用list包装。

  由于这里提供的这段JSON格式的数据最外层是对象包装,所以可以采用sun公司原生提供的JSONObject类,传入对象格式的JSON数据构造一个JOSNObject的对象。

  再分析里层的:是一个键值对,键名为list,值是一个数组,所以我们可以通过键名得到这个数组。

  调用JSONObject.getJSONArray()方法,传入键名可以得到一个JSONArray对象。

  5) 得到了JSONArray数组之后,就可以开始使用for循环遍历数组了,由于数组的每一项都是一个对象,所以调用JSONArray.getJSONObject(下标)方法,传入下标,即可得到最里层的JSON格式的对象。

  之后,new一个member的对象,设置member的name值和sex值,值可以从最里层的JSON对象通过getString()方法,传入键名得到。

  最后,将member对象添加到事先构建好的List列表里面即可。

  6) 当然,最后只需要打印出member的属性值,即可检验是否成功解析JSON数据。这里调用之前重写的toString()方法。

  7) 最后看看,运行成功的结果吧!成功的打印出了name和sex属性值。

原文链接:http://www.maiziedu.com/wiki/android/json/

最新文章

  1. Mysql完全手册(笔记一,底层与内置函数)
  2. MVC WebAPI 三层分布式框架开发
  3. HDU4288 Coder(线段树)
  4. SLF4简介
  5. 动态LOV语句、向具有LOV的ITEM赋值时报FRM-40212需要验证错误
  6. php模拟用户自动在qq空间发表文章的方法
  7. 【Hadoop学习】Apache HBase项目简介
  8. #include <stdbool.h>
  9. python3.4 使用pymssql 乱码
  10. (76) Clojure: Why would someone learn Clojure? - Quora
  11. LoadRunner11_录制Oracle数据库脚本
  12. hdu2181 简单搜索
  13. IdentityServer4之Resource Owner Password Credentials(资源拥有者密码凭据许可)
  14. Linux CAN Shell 测试脚本程序
  15. table 的部分使用,固定行,固定列等
  16. 4.6 explain 之 rows
  17. CodeForce VKcup A
  18. 解决ubuntu下firefox的flash全屏后不能恢复问题 ZT
  19. android 监控应用进程
  20. 100种不同图片切换效果插件pageSwitch

热门文章

  1. Java设计模式(23)——行为模式之访问者模式(Visitor)
  2. Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token
  3. CF 741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  4. #386. 【UNR #3】鸽子固定器
  5. springboot之websocket
  6. redis 类型、方法
  7. 了解和分析iOS Crash
  8. InnoDB锁冲突案例演示(续)
  9. 【转】VSstudio中的一些宏
  10. Python3 Tkinter-Text