JSON
# 20.JSON
JSON,全称JavaScript Object Notation,译为JavaScript对象表示法,是一种非常常见的数据格式。
# 什么是JSON
前面我们讨论了XML这种数据格式。XML的特点是功能全面,但标签繁琐,格式复杂。在Web上使用XML现在越来越少,取而代之的是JSON这种数据结构。
JSON去除了所有JavaScript执行代码,只保留JavaScript的对象格式。一个典型的JSON如下:
{
"id": 1,
"name": "Java核心技术",
"author": {
"firstName": "Abc",
"lastName": "Xyz"
},
"isbn": "1234567",
"tags": ["Java", "Network"]
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
JSON作为数据传输的格式,有几个显著的优点:
- JSON只允许使用UTF-8编码,不存在编码问题;
- JSON只允许使用双引号作为key,特殊字符用
\
转义,格式简单; - 浏览器内置JSON支持,如果把数据用JSON发送给浏览器,可以用JavaScript直接处理。
因此,JSON适合表示层次结构,因为它格式简单,仅支持以下几种数据类型:
- 键值对:
{"key": value}
- 数组:
[1, 2, 3]
- 字符串:
"abc"
- 数值(整数和浮点数):
12.34
- 布尔值:
true
或false
- 空值:
null
浏览器直接支持使用JavaScript对JSON进行读写:
// JSON string to JavaScript object:
jsObj = JSON.parse(jsonStr);
// JavaScript object to JSON string:
jsonStr = JSON.stringify(jsObj);
1
2
3
4
5
2
3
4
5
所以,开发Web应用的时候,使用JSON作为数据传输,在浏览器端非常方便。因为JSON天生适合JavaScript处理,所以,绝大多数REST API都选择JSON作为数据传输格式。
# 使用Java如何对JSON进行读写
在Java中,针对JSON也有标准的JSR 353 API,但是我们在前面讲XML的时候发现,如果能直接在XML和JavaBean之间互相转换是最好的。类似的,如果能直接在JSON和JavaBean之间转换,那么用起来就简单多了。
常用的用于解析JSON的第三方库有:
- Jackson
- Gson
- Fastjson:FastJSON-GitHub (opens new window)
- ...
注意到上一节提到的那个可以解析XML的Jackson也可以解析JSON!我们后续在学习Servlet的时候,再详细讲解。
上次更新: 2024/4/18 16:33:08