前面我们学习过了一种简单的数据存储语言XML,以其自身的优点在业界得到广泛的支持。今天,我们来看看另一种轻量级的数据存储格式--JSON
一:JSON到底是什么?
个人认为,JSON其实就是一个有着格式标准的字符串序列,可以按照某些标准将数据存储成JSON的形式,而我们也可以从这个字符串序中提取出我们所需的数据。JSON解析正是将字符串变为我们需要的数据的过程。
二:JSON的组成
JSON中有一种结构叫做对象,他是被{ }包括起来的内容,数据结构为{key:value,key:value,....}的键值对结构。在面向对象的编程语言中,key为对象的属性,value为对象对应属性的值。别看他的数据结构这么简单,但是他却可以表示很复杂的数据。
三:具体形式
对象是一个无序的“名称/值”对集合。
(1):每一个对象以“{”左括号开始,“}”右括号结尾
(2):每一个“名称”和“值”之间用“:”分割开来
(3):“名称/值”对之间用“,”分割
例子:表示人得一个对象,可以表示为:
|
四:与XML的对比
(1):可读性
JSON和XML的可读性相对比,可能JSON略显不足,文件对于“人”来说看起来可能不是很清晰,但是机器却看得明白;XML语言对于人和机器来说都足够清晰
(2):可扩展性
没有什么是XML能扩展二而JSON扩展不了的
五:实例对比
编写一个简易的XML数据存储和JSON数据存储,从而更直观的看出二者的区别:
1:XML形式
<?xml version="1.0" encoding="gbk" ?> <person> <name>张飞</name> <age>20</age> <address> <city>哈尔滨</city> <street>和兴路</street> </address> </person> |
2:JSON形式
|
注:对于address属性来说,他自己本身也是一个JSON对象,因为他也有自身的属性及属性值,所以也应该用“{名称/值}”括起来。
六:JSON解析
1:第三方jar包
◆进行解析之前,我们应该导入第三方jar包,为我们解析提供方便。具体的jar包请见附件内容。
◆具体安装:找到jar包之后,下到自己电脑的某一个位置,然后项目-->右键-->属性-->java build path -->add external jars-->选中刚才的jar包-->ok-->ok至此项目配置完毕。
2:JSONObject
是一个final类,继承自Object类,实现了JSON接口。构造方法用于创建对应的JSON对象,具体如下:
◆JSONObject():创建一个空的JSONObject对象
◆JSONObject(String str):通过str字符串创建JSON对象
3:常用方法
(1):put("名称","值"):对象方法,用于添加相应的键值对到JSON对象中
(2):getJSONObject(String key):对象方法,根据参数中的键,找到对应的JSONObject对象
(3):getString(String key)/getInt(String key)等:根据对应的键找到对应的值
4:具体解析过程
(1)JSON格式字符串的生成
因为JSON实质就是规定格式的字符串,所以方法的返回类型为String。首先创建JSON对象,添加相应的键值对到对象中,返回JSON对象的字符串表现形式。具体如下:
|
(2)JSON解析
根据方法的传递参数,创建指定的JSON对象,从最外层的JSON对象开始,逐层根据键,查找值,做成字符串拼接,得到输出的数据
|
(3)测试:上面的两个方法,做成静态内部类的形式
|
(4)结果:
|
JSON经常用于Android中,比如根据中国气象对外接口,访问到的就是JSON格式的字符串,通过解析,得到我们需要的天气信息,添加到软件设计中,作为提供天气变化的途径,大家可自行试一试解析“中国气象对外接口”中的JSON对象,得到自己想要的数据,做一个类似于墨迹天气的软件。
博主最近要回家一段时间,由于网络的不便利,可能无法定期与大家见面了。最近,有一个人这样说过:当你习惯写博客的时候,你就会觉得不写都睡不着觉。一开始觉得还不太现实,但是现在的我信了,静下心来,把自己学到的知识写出来,与大家分享的感觉真好。这几天的我不知道是不是又该飘起来?应该学会内心平静。。对吧。。这几天的缺席,我会以更大的努力补回来的,等我回来哦。。给自己的心情放个假,呼吸呼吸新鲜空气吧。 我还会回来的。。。
转载于:https://blog.51cto.com/cinderella7/1269063