点此进入:从零快速构建APP系列目录导图
点此进入:UI编程系列目录导图
点此进入:四大组件系列目录导图
点此进入:数据网络和线程系列目录导图
本节例程下载地址:WillFLowJSON
一、JSON简介
我们之前已经掌握了 XML 格式数据的解析方式,那么接下来我们要去学习一下如何解析 JSON 格式的数据,在学习之前,我们先将这两者做一个简单的比较。
XML与JSON的对比:
- JSON和XML的数据可读性基本相同
- JSON和XML同样拥有丰富的解析手段
- JSON相对于XML来讲,数据的体积小
- JSON与JavaScript的交互更加方便
- JSON对数据的描述性比XML较差
- JSON的速度要远远快于XML
总之,比起 XML, JSON 的主要优势在于它的体积更小,在网络上传输的时候可以更省流量。但缺点在于,它的语义性较差,看起来不如 XML 直观。
(1)JSON 的格式规范
就像协议一样,JSON 也是有一套规范的,毕竟服务端和客户端双方一般来讲都是通过 JSON 字符串来传递数据的。
它的语法规则如下:
- 数据在“名称/值”对中;
- 数据由逗号分隔;
- 花括号保存对象;
- 方括号保存数组;
(2)JSON数据的书写格式范例
[
{ "id":"1","name":"WGH","age":"18" },
{ "id":"2","name":"WillFlow","age":"16" }
]
(3)JSON校验工具
我们除了解析JSON还可以自己拼接JSON,当然如果你自己拼了一个JSON字符串又不知道对不对, 可以用校验工具进行校验,比如:点击这里,然后把自己拼接的JSON字符串贴上去,就可以校验正确与否了。
(4)Android给我们提供的JSON解析类
这些JSON解析类的API都存在于org.json包下,而我们用到的类有下面这些:
- JSONObject: JSON对象,可以完成Json字符串与Java对象的相互转换
- JSONArray: JSON数组,可以完成Json字符串与Java集合或对象的相互转换
- JSONStringer: JSON文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个JSONStringer实体只能对应创建一个JSON text
- JSONTokener:JSON解析类
- JSONException:JSON异常
二、用 JSONObject 解析 JSON 格式数据
首先在MainActivity中定义一个JSON 字符串常量,代码如下:
private static final String JSON = "