解析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/

Android开发中如何解析Json的更多相关文章

  1. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  2. Android开发中无处不在的设计模式——动态代理模式

    继续更新设计模式系列.写这个模式的主要原因是近期看到了动态代理的代码. 先来回想一下前5个模式: - Android开发中无处不在的设计模式--单例模式 - Android开发中无处不在的设计模式-- ...

  3. 讨论Android开发中的MVC设计思想

    最近闲着没事,总是想想做点什么.在时间空余之时给大家说说MVC设计思想在Android开发中的运用吧! MVC设计思想在Android开发中一直都是一套比较好的设计思想.很多APP的设计都是使用这套方 ...

  4. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

  5. 转:Android开发中的MVP架构(最后链接资源不错)

    Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...

  6. 转: Android开发中的MVP架构详解(附加链接比较不错)

    转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...

  7. Android开发MVP模式解析

    http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 在开发Android应用时,相信很多同学遇到和我一样的情况,虽然 ...

  8. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  9. 【转】android开发中关于模拟器emulation的常见问题

    [转]android开发中关于模拟器emulation的常见问题 Trouble: 无法启动android模拟器,提示 XDM authorization key matches an existin ...

随机推荐

  1. 厦门Uber优步司机奖励政策(12月21日-12.27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. .net core 基于multipart/form-data的文件上传,这里以图片上传为例

    首先传递的数据格式大概如下: 然后就可以在后端获取数据了:直接上代码了哈: [HttpPost]        ///分别获取 data数据和调用图片上传方法 public async Task< ...

  3. Unity编辑器 - TreeView控件笔记

    用起来有一些规则,写个简单的案例以备查阅: using System.Collections.Generic; using UnityEditor.IMGUI.Controls; using Unit ...

  4. Python2快速入门教程,只需要这十五张图片就够了!

    今天给大家分享的教程是适用于Python 2.7,但它可能适用于Python 2.Python 2.7将停止在2020中的支持. 与Python 2.7和3兼容的Python代码是完全可能的.通过使用 ...

  5. jetbrains系列激活

    没钱,只能DB了. 为了避免某些个人私自搭建服务器,以及自己搭建激活服务器,因此,决定使用破解包~~~. 注意:只要破解,就要屏蔽官方激活服务器:0.0.0.0 account.jetbrains.c ...

  6. 剑指offer-字符串的排列26

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输 ...

  7. pandas协助工具

    pandas有时候操作很不方便,也有可能是我不熟练吧,反正就是各种别扭.下面是我写的一个简单的json数据操作工具,能够完成简单的数据分析工作,后续会不断完善的 # coding=utf-8 impo ...

  8. return阻止js继续向下执行

    终止JS运行有如下几种可能: 终止函数的运行的方式有两种 在函数中使用return,则当遇到return时,函数终止执行,控制权继续向下运行 在函数中使用try-catch异常处理,需要结束时,使用t ...

  9. lintcode-152-组合

    152-组合 组给出两个整数n和k,返回从1......n中选出的k个数的组合. 样例 例如 n = 4 且 k = 2 返回的解为: [[2,4],[3,4],[2,3],[1,2],[1,3],[ ...

  10. LintCode-373.奇偶分割数组

    奇偶分割数组 分割一个整数数组,使得奇数在前偶数在后. 样例 给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]. 挑战 在原数组中完成,不使用额外空间. 标签 数组 两根指针 code ...