json的数据结构
JSON 的数据结构
JSON 由两种数据结构组成:对象(字典)和数组。
一、对象
对象(object)是由键值对组成的无序集合。
- 键是字符串,值可以是任何类型,包括对象和数组;
- 对象由一对花括号
{ }包围; - 键和值之间用冒号
:分隔; - 键值对之间用逗号
,分隔。
举个逆子:
{"list" : [ {"name": "Apifox","ID": 2,"city": "Guangzhou"}]
}
在这个例子中,对象的键是"name"、"ID"和"city",对应的值是字符串、数字和字符串。
二、数组
数组(array)是值(value)的有序集合。
- 每个值可以是任何类型,包括对象和数组。
- 数组由一对方括号
[ ]包裹 - 值之间用逗号
,分隔。
举个粒子:
[ "apple", "banana", "orange"]
在这个例子中,数组包含三个字符串元素:"apple"、"banana"和"orange"。
三、值
值(value)可以是花括号{ }括起来的字符串(String)、数值(Number)、布尔值(true/false)、 null、对象(Object)或者数组(Array),这些结构可以嵌套。
3.1 字符串
JSON 字符串是由双引号" "包围的 Unicode 字符序列,使用反斜杠\转义。
举个例子:
{"name": "Apifox","city": "Guangzhou"
}
在这个例子中,字符串"name"和"city"是由双引号" "包围的。
3.2 数字
JSON 数字可以是整数或浮点数。
举个例子:
{"age": 30,"weight": 65.5
}
在这个例子中,数字"30"和"65.5"分别是整数和浮点数,不需要双引号" "包围。
3.3 布尔值
JSON 布尔值只有两个取值:true 和 false。
举个例子:
{"isStudent": true,"isEmployed": false
}
在这个例子中,布尔值"isStudent"的取值为true,布尔值"isEmployed"的取值为false,不需要双引号" "包围。
3.4 null
JSON 的 null 表示一个空值。
举个例子:
{"middleName": null
}
在这个例子中,"middleName"的值为null,不需要双引号" "包围。
四、复杂对象(字典)示例
{"id": 101,"name": "Jane Doe","is_active": true,"roles": ["admin", "editor"],"contact": {"email": "jane.doe@example.com","phone": "123-456-7890"},"preferences": {"notifications": {"email": true,"sms": false}}
}
五、数组示例
[{"name": "Alice","age": 28,"skills": ["JavaScript", "Python"]},{"name": "Bob","age": 34,"skills": ["Java", "C++"]}
]
六、JSON 注意事项
- JSON的字符串必须使用双引号
" ",而不能使用单引号' '。 - JSON的值可以是字符串、数字、布尔值、null、对象或数组。
- JSON的键必须是字符串,必须使用双引号
" "。 - JSON的格式必须严格遵守规定,否则可能会导致解析错误。
七、JSON 的优点和缺点
7.1 优点
- 与 JavaScript 完美兼容:JSON 格式源自 JavaScript,因此它与 JavaScript 非常兼容,并且易于在 JavaScript 应用程序中使用。
- 轻量级:JSON 格式非常轻量级,因此它非常适合在网络中传输大量数据。相比于 XML,它的数据量更小,传输速度更快。
- 多语言支持:JSON 格式是一种跨语言的格式,它可以被许多不同语言的程序支持,易于解析和生成,几乎所有编程语言都支持 JSON。
- 易于阅读和编辑:JSON 格式非常易于阅读和编写,因为它具有简单的语法和结构,格式清晰,具有良好的可读性。
7.2 缺点
- 不支持注释: JSON 格式不支持注释,这可能使得编写和维护复杂数据时变得有些困难。
- 无法表示二进制数据: JSON 格式无法直接表示二进制数据,这意味着它无法用于存储和传输图像、视频等二进制数据。
- 不支持命名空间: JSON 不支持命名空间,这可能会导致不同的应用程序之间发生命名冲突。
- 不支持DTD: JSON 不支持 DTD,这使得在验证 JSON 数据格式时不太方便。
八、JSON 和 XML 的区别
JSON 和 XML都是常用的数据交换格式。它们之间有什么区别呢?
- 简洁性与可读性:
JSON 比 XML 更加简洁和易读。相比于 XML 的繁琐闭合标签,JSON 采用更为紧凑的表示形式,使得数据结构更清晰明了。 - 解析速度与带宽占用:
JSON 的解析速度通常比 XML 更快,因为它的结构简单,不需要解析复杂的标签。此外,JSON 数据通常占用的带宽更少,有助于提高传输效率。 - 数据复杂性:
XML 比 JSON 更适合描述复杂的数据类型和嵌套结构。XML 支持命名空间和多种数据格式,这使得它在处理复杂数据和配置文件时具有优势。 - 注释支持:
JSON 不支持注释,这意味着在数据中不能嵌入注释说明。而 XML 则支持注释,可以在数据文档中添加解释说明,便于维护和理解。
举个例子,下面是一个 XML 文档:
<book><title>Harry Potter</title><author>J.K. Rowling</author><year>2005</year>
</book>
相应的 JSON 文档如下所示:
{"title": "Harry Potter","author": "J.K. Rowling","year": 2005
}
可以看到,JSON 比 XML 更加简洁,没有了冗余的标签和属性。
相关文章:
json的数据结构
JSON 的数据结构 JSON 由两种数据结构组成:对象(字典)和数组。 一、对象 对象(object)是由键值对组成的无序集合。 键是字符串,值可以是任何类型,包括对象和数组;对象由一对花括…...
html-docx-js和file-saver实现html导出word
依赖html-docx-js,file-saver,html2canvas import { asBlob } from html-docx-js/dist/html-docx; import { saveAs } from file-saver; import html2Canvas from html2canvas;const handleImageToBase64 (cloneEle) > {let imgElements cloneEle.…...
三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统
PACS,即图像存储与传输系统,是应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动,集成了医疗设备,图像存储和分发,数字图像在重要诊断和会诊时的显示&a…...
Golang | Leetcode Golang题解之第292题Nim游戏
题目: 题解: func canWinNim(n int) bool {return n%4 ! 0 }...
Redis在SpringBoot中配置
lettuce redis的使用方法有两种,jedis和lecttuce,jedis用的不是很多,下面讲解用lettuce的使用方法。 首先导包: <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artif…...
linux 网络子系统
__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数,它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析: 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…...
JVM:垃圾回收器演进
文章目录 一、演进二、Shenandoah三、ZGC 一、演进 二、Shenandoah Shenandoah是由Red Hat开发的一款低延迟的垃圾收集器,Shenandoah并发执行大部分GC工作,包括并发的整理,堆大小对STW的时间基本没有影响。 三、ZGC ZGC是一种可扩展的低延…...
全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音
源码介绍 最新微软语音合成网页版源码,可以用来给影视解说和短视频配音。它是TTS文本转语言,API接口和PHP源码。 这个微软语音合成接口的源码,超级简单,就几个文件搞定。用的是官方的API,试过了,合成速度…...
大语言模型-对比学习-Contrastive Learning
一、对比学习概念 对比学习是一种特殊的无监督学习方法。 旨在通过拉近相关样本的距离并且推远不相关样本的距离,来学习数据表示。 通常使用一种高自由度、自定义的规则来生成正负样本。在模型预训练中有着广泛的应用。 二、对比学习小案例 对比学习主要分为三个…...
C++ 封装的用法
C(七)封装 封装,可以达到,对外提供接口,屏蔽数据,对内开放数据。 权限控制 struct 中所有行为和属性都是 public 的(默认),此举也是为了 C兼容 C 语言, 因为 C 语言中没有权限的概念。 C中的 class 可以…...
【C++11:异常】
目录 抛异常标准书写格式 抛异常如何执行? 指定抛出异常类型: noexcept 关键字:throw 抛异常标准书写格式 抛异常如何执行? 当212行的异常被抛出,程序会重新返回函数func中,在函数中去寻找catch 语句的…...
Dify中HTTP请求节点的常见操作
HTTP节点包括API请求类型(GET、POST、HEAD、PATCH、PUT、DELETE),鉴权类型(无、API-Key基础、API-Key Bearer、API-Key自定义),HEADERS键值设置,PARAMS键值设置,BODY(non…...
《大语言模型(赵鑫)》知识框图
...
【Android】性能实践—编码优化与布局优化学习笔记
编码优化 使用场景 如果需要拼接字符串,优先使用StringBuffer和StringBuilder进行凭借,他们的性能优于直接用加号进行拼接,因为使用加号连接符会创建多余的对象一般情况下使用基本数据类来代替封装数据类型(比如int优于Integer&…...
如何合规与安全地利用专业爬虫工具,构建企业数据竞争优势
摘要: 本文深入探讨了在当今大数据时代,企业如何通过合规且安全的方式运用专业爬虫工具,有效收集并分析海量信息,进而转化为企业独有的数据优势。我们不仅会介绍最佳实践,还会讨论关键技术和策略,帮助企业…...
自动驾驶三维车道线检测系列—OpenLane数据集介绍
文章目录 1. 背景介绍2. OpenLane数据集详细描述2.1 数据集特点2.2 坐标系定义 3. 使用方法4. 结论 1. 背景介绍 自动驾驶技术的发展日新月异,而3D车道感知是其核心之一。本文将深入介绍OpenLane数据集——迄今为止规模最大、最接近真实世界的3D车道数据集。我们将…...
CMakeList学习笔记
设置项目:project project(planning VERSION 1.0.0 LANGUAGES CXX) # 项目的名字 版本 1.1.0 编程语言 CXX 设置包含目录:include_directories、targer_include_directories 设置编译类型:add_executable、add_library add_executable(demo d…...
将git默认的编辑器设置为vin
git默认编辑器现状 如下,很多linux发行版,未加修改的情况下,git的默认编辑器使用起来不太方便 Signed-off-by: root <rootxxx.COM># Please enter the commit message for your changes. Lines starting # with # will be ignored, a…...
ros2_control 6 自由度机械臂
系列文章目录 前言 ros2_control 是一个实时控制框架,专为普通机器人应用而设计。标准的 c 接口用于与硬件交互和查询用户定义的控制器命令。这些接口增强了代码的模块化和与机器人无关的设计。具体的应用细节,例如使用什么控制器、机器人有多少个关节以…...
Python 在自动化中的实际应用:用 Python 简化繁琐任务
文章目录 1、概述2、自动化文件和目录管理3.数据处理与分析4.网页爬虫5. 系统管理6。定时任务7.结语 1、概述 这篇文章将深入探讨Python在自动化中的实际应用,帮助您用Python简化繁琐任务。 我们将从多个方面入手,展示如何利用Python进行文件管理、数据…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
