JSON详解

目录

[一. 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的特点:

  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 类的实例对象

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字符格式数据;

相关推荐
nbsaas-boot3 小时前
探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
数据库·mysql·json
疯一样的码农5 小时前
Jackson 的@JsonRawValue
json
Web打印8 小时前
web打印插件 HttpPrinter 使用半年评测
javascript·json·firefox·jquery·html5
手心里的白日梦9 小时前
网络计算器的实现:TCP、守护进程、Json、序列化与反序列化
网络·tcp/ip·json
chenchihwen9 小时前
数据分析时的json to excel 转换的好用小工具
数据分析·json·excel
子燕若水11 小时前
简要解释JSON Schema
前端·html·json
Json_1817901448012 小时前
淘系商品评论json数据示例参考,API接口系列
大数据·json·api
慕羽★1 天前
详细介绍如何使用rapidjson读取json文件
linux·c++·windows·json·file·param·rapidjson
轻口味1 天前
配置TypeScript:tsconfig.json详解
ubuntu·typescript·json
zybishe1 天前
免费送源码:Java+ssm++MVC+HTML+CSS+MySQL springboot 社区医院信息管理系统的设计与实现 计算机毕业设计原创定制
java·hadoop·sql·zookeeper·html·json·mvc