目录
[一. JSON简述](#一. JSON简述)
[二. XML和JSON的区别](#二. XML和JSON的区别)
[三. JSON的语法格式](#三. JSON的语法格式)
[3.1 JSON语法格式](#3.1 JSON语法格式)
[3.2 单个JSON对象](#3.2 单个JSON对象)
[3.3 数组存储JSON数据](#3.3 数组存储JSON数据)
[四. JSON数据与Java的相互转化](#四. JSON数据与Java的相互转化)
[4.1 hutool工具包](#4.1 hutool工具包)
[4.2 fastjson 工具包](#4.2 fastjson 工具包)
一. JSON简述
JSON (JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的IS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
现如今,绝大部分互联网前后端数据传输都是采用JSON数据格式进行传输,如下图所示,Response 中的数据正是JSON格式数据。
JSON的特点:
- JSON是一种轻量级的数据交换格式;
- JSON采用完全独立于语言的文本格式,就是说不同的编程语言JSON数据是一致的;
- JSON易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率);
二. XML和JSON的区别
相同点:都可以作为一种数据交换格式;
不同点:
- XML是重量级的,JSON是轻量级的,XML在传输过程中比较占带宽,JSON占带宽少,易于压缩。
- XML和ISON都用在项目交互下,XML多用于做配置文件,ISON用于数据交互。
三. JSON的语法格式
3.1 JSON语法格式
JSON语法格式有严格的要求,只有遵循以下几点才能被称为一个JSON对象。
- 外面由括起来;
- 数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他JSON对象);
- 每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号);
- 参数值如果是string类型,就必须加引号,如果是数字类型,引号可加可不加;
在前端开发过程中,经常会用到JSON来定义对象和对象属性,并定义在<script><script>标签之内;
3.2 单个JSON对象
如下示例代码,定义了一个简单的 person 对象,它的作用等同于Java中定义了一个 Person 类的实例对象
javascript
HTML代码省略......
<script>
let person = {
"name":"zhangsan",
"age":"18",
"email":"@qq.com"
}
console.log(person);
</script>
然后我们保存此页面,到浏览器中打开开发者工具找到控制台,然后刷新页面,就可以在 console 控制台看到的输出出来的 person 对象;
3.3 数组存储JSON数据
实际开发过程中,我们从数据库中查到的数据量往往会很大,我们会将数据存储到ArrayList中,在返回给前端时,前端会将集合中的每个对象都转化为一个个JSON对象。
如下所示,我们从数据库中查到三条记录,使用List接收返回给前端,前端 Response 响应体中得到的结果就和下面有些类似了,"[]"表示数组。数组中每个"{}"又单独表示一个个JSON对象。
javascript
let productInfo = {
"productCategory":"电脑",
"productList":[
{
"computerId":"101",
"computerName":"拯救者",
"computerPrice":"7500",
},
{
"computerId":"102",
"computerName":"华为",
"computerPrice":"6000",
},
{
"computerId":"103",
"computerName":"外星人",
"computerPrice":"10500",
},
],
}
四. JSON数据与Java的相互转化
在开发过程中,我们常常会碰到JSON格式的数据与JavaBean格式的实体类之间的相互转化,此时我们就可以借助第三方工具包提供的现有API来提高我们的开发效率。这里我推荐两个大家比较常用的依赖包。
4.1 hutool工具包
常说糊涂工具包,里面不仅提供了JSON与Java互相转化的API,还提供了各种判空数组、判空字符串、日期格式化等众多小巧好用的API,非常推荐同学我们在日常练习的时候导包使用里面的API;
XML
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.32</version>
</dependency>
糊涂工具包提供了 JSONUtil 工具类;
JSONUtil.toBean() 方法将JSON格式数据转化为JavaBean实体对象;
JSONUtil.toJsonStr() 方法将JavaBean实体对象转化为JSON字符格式数据;
4.2 fastjson 工具包
fastjson工具包是由阿里巴巴提供的一个第三方工具包,依赖地址如下
XML
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.52</version>
</dependency>
JSON.prase() 方法将JSON格式数据转化为JavaBean实体对象;
JSON.toJSONString() 方法将JavaBean实体对象转化为JSON字符格式数据;