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

相关推荐
每天要多喝水41 分钟前
nlohmann/json 的使用
c++·json
电商API&Tina4 小时前
乐天平台 (Rakuten) 数据采集指南
大数据·开发语言·数据库·oracle·json
数研小生21 小时前
构建命令行单词记忆工具:JSON 词库与艾宾浩斯复习算法的完美结合
算法·json
编码者卢布1 天前
【Azure Stream Analytic】用 JavaScript UDF 解决 JSON 字段被转成 Record 的关键点
javascript·json·azure
电商API&Tina1 天前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
liwulin05061 天前
【JSON】使用com.fasterxml.jackson解析json字符串
java·数据库·json
奔跑的呱呱牛1 天前
geojson-to-kml (KML 格式转换工具)
arcgis·json
一起养小猫1 天前
Flutter for OpenHarmony 实战:打造功能完整的云笔记应用
网络·笔记·spring·flutter·json·harmonyos
talle20213 天前
Hive | json数据处理
hive·hadoop·json
一起养小猫3 天前
Flutter for OpenHarmony 实战:网络请求与JSON解析完全指南
网络·jvm·spring·flutter·json·harmonyos