JSON介绍
JSON(JavaScript Objet Notation)是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它采用一种键:值
对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。
“XML的时代已经过去,现在是JSON的时代”。相信现在这个观点很多人已经默认认同,那么我们是否有认真思考过为什么现在JSON能够顶替XML的地位。我们来简单看下两种的表示方式:
<?xml version="1.0" encoding="gb2312"?>
<class>
<stu id="001">
<name>杨过</name>
<sex>男</sex>
<age>20</age>
</stu>
<stu id="002">
<name>小龙女</name>
<sex>女</sex>
<age>18</age>
</stu>
</class>
[
{
"id": "001",
"name": "杨过",
"sex": "男",
"age": "20"
},
{
"id": "002",
"name": "小龙女",
"sex": "女",
"age": "18"
}
]
两种方式都是用来描述简单的班级信息,数据不多,但是明显可以看出JSON比XML更加简洁。具体区别可为以下几点:
- 可读性:JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
- 可扩展性:XML天生有很好的扩展性,JSON当然也有,因此XML能扩展的,JSON也可以扩展。
- 编码程度:XML有丰富的编码工具,比如DOM4J、JDom等,JSON也提供许多工具。但是在没有工具的情况下,因为XML有很多结构上的字符,编程难度相对较高。
- 解码难度:XML的解析需要考虑到子节点父节点,难度较大,而JSON的解析难度几乎为0,看上去就能理解数据结构。
JSON认知
JSON具有以下形式(JSON对象、JSON数组、JSON字符串)
- JSON 对象
{
"id": "002",
"name": "小龙女",
"sex": "女",
"age": "18"
}
这就是一个简单的JSON对象,我们观察可以得出的一些语法:
- 数据在花括号中
{}
- 数据处以
键:值
对的形式出现(其中键多以字符串的形式出现,值可以为字符串、数值以及JSON对象) - 每两个
键:值
对以,
分隔,最后一个键值对省略,
我们按照上述三个特征,便可以很简单的构建出一个JSON对象。
- JSON 数组
["value1","value2","value3"]
或
[
{
"id": "001",
"name": "杨过",
"sex": "男",
"age": "20"
},
{
"id": "002",
"name": "小龙女",
"sex": "女",
"age": "18"
}
]
数组的表示方式也很简单:
- 头尾由
[]
包裹 - 数据主键以
,
隔开
- JSON 字符串
'{"id": "001", "name": "杨过", "sex": "男", "age": "20"}'
JSON字符串与Java的字符串非常相似。
- 它必须以
""
或''
包裹数据,支持字符串的各种操作 - 里面的数据格式可以为JSON对象,也可以是JSON数组亦或者是两个基本类型的组合变形
以上便是JSON的基本形式,JSON可以适用于各种语言,每个语言皆有各自的JSON实现方式。
JSON序列化反序列化的框架有很多,最常见的Jackson、阿里巴巴开源的FastJson、谷歌的GSON、apache提供的json-lib等,下面我们主要来熟悉一下:Java语言中FastJson的使用。