JSON详解

目录

一. JSON简述

二. XML和JSON的区别

三. JSON的语法格式

3.1 JSON语法格式

3.2 单个JSON对象

3.3 数组存储JSON数据

四. JSON数据与Java的相互转化

4.1 hutool工具包

4.2 fastjson 工具包


一. JSON简述

JSON (JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的IS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

现如今,绝大部分互联网前后端数据传输都是采用JSON数据格式进行传输,如下图所示,Response 中的数据正是JSON格式数据。

JSON的特点:

  1. JSON是一种轻量级的数据交换格式;
  2. JSON采用完全独立于语言的文本格式,就是说不同的编程语言JSON数据是一致的;
  3. JSON易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率);

二. XML和JSON的区别

相同点:都可以作为一种数据交换格式;

不同点:

  1. XML是重量级的,JSON是轻量级的,XML在传输过程中比较占带宽,JSON占带宽少,易于压缩。
  2. XML和ISON都用在项目交互下,XML多用于做配置文件,ISON用于数据交互。

三. JSON的语法格式

3.1 JSON语法格式

JSON语法格式有严格的要求,只有遵循以下几点才能被称为一个JSON对象。

  1. 外面由括起来;
  2. 数据以"键:值”对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他JSON对象);
  3. 每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号);
  4. 参数值如果是string类型,就必须加引号,如果是数字类型,引号可加可不加;

在前端开发过程中,经常会用到JSON来定义对象和对象属性,并定义在<script><script>标签之内;

3.2 单个JSON对象

如下示例代码,定义了一个简单的 person 对象,它的作用等同于Java中定义了一个 Person 类的实例对象

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对象。

        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;

<!-- 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工具包是由阿里巴巴提供的一个第三方工具包,依赖地址如下

<dependency>
     <groupId>com.alibaba.fastjson2</groupId>
     <artifactId>fastjson2</artifactId>
     <version>2.0.52</version>
</dependency>

JSON.prase() 方法将JSON格式数据转化为JavaBean实体对象;

JSON.toJSONString() 方法将JavaBean实体对象转化为JSON字符格式数据;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值