当前位置: 首页 > news >正文

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 布尔值只有两个取值:truefalse

举个例子:

{"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 优点
  1. 与 JavaScript 完美兼容:JSON 格式源自 JavaScript,因此它与 JavaScript 非常兼容,并且易于在 JavaScript 应用程序中使用。
  2. 轻量级:JSON 格式非常轻量级,因此它非常适合在网络中传输大量数据。相比于 XML,它的数据量更小,传输速度更快。
  3. 多语言支持:JSON 格式是一种跨语言的格式,它可以被许多不同语言的程序支持,易于解析和生成,几乎所有编程语言都支持 JSON。
  4. 易于阅读和编辑:JSON 格式非常易于阅读和编写,因为它具有简单的语法和结构,格式清晰,具有良好的可读性。
7.2 缺点
  1. 不支持注释: JSON 格式不支持注释,这可能使得编写和维护复杂数据时变得有些困难。
  2. 无法表示二进制数据: JSON 格式无法直接表示二进制数据,这意味着它无法用于存储和传输图像、视频等二进制数据。
  3. 不支持命名空间: JSON 不支持命名空间,这可能会导致不同的应用程序之间发生命名冲突。
  4. 不支持DTD: JSON 不支持 DTD,这使得在验证 JSON 数据格式时不太方便。

八、JSON 和 XML 的区别

JSON 和 XML都是常用的数据交换格式。它们之间有什么区别呢?

  1. 简洁性与可读性:
    JSON 比 XML 更加简洁和易读。相比于 XML 的繁琐闭合标签,JSON 采用更为紧凑的表示形式,使得数据结构更清晰明了。
  2. 解析速度与带宽占用:
    JSON 的解析速度通常比 XML 更快,因为它的结构简单,不需要解析复杂的标签。此外,JSON 数据通常占用的带宽更少,有助于提高传输效率。
  3. 数据复杂性:
    XML 比 JSON 更适合描述复杂的数据类型和嵌套结构。XML 支持命名空间和多种数据格式,这使得它在处理复杂数据和配置文件时具有优势。
  4. 注释支持:
    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 更加简洁,没有了冗余的标签和属性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 测试用例的设计方法
  • AOP面向切面编程和log4j的使用(Java版)
  • 多列传感器数据多项式拟合python脚本
  • 斯坦福UE4 C++课学习补充 14:UMG-优化血量条
  • spring常用注解有哪些
  • YOLOv5改进 | 注意力机制 | 二阶注意力网络来进行单图像超分辨率【附网盘完整代码】
  • 力扣SQL 最后一个能进入巴士的人 自连接
  • 【爱上C++】list用法详解、模拟实现
  • 放大电路总结
  • electron 网页TodoList工具打包成win桌面应用exe
  • lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理
  • Matlab M_map工具箱绘制Interrupted Mollweide Projection
  • 【React 】开发环境搭建详细指南
  • Java中的集合相关知识汇总
  • 【Go】探索 Go 语言的内建函数 copy
  • hexo+github搭建个人博客
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • es6
  • github从入门到放弃(1)
  • JavaScript 基础知识 - 入门篇(一)
  • JS字符串转数字方法总结
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • node 版本过低
  • Python 基础起步 (十) 什么叫函数?
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 码农张的Bug人生 - 见面之礼
  • 前端之React实战:创建跨平台的项目架构
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 深入浏览器事件循环的本质
  • 为什么要用IPython/Jupyter?
  •  一套莫尔斯电报听写、翻译系统
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​​​​​​​​​​​​​​Γ函数
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #define,static,const,三种常量的区别
  • #php的pecl工具#
  • (七)理解angular中的module和injector,即依赖注入
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)c52学习之旅-流水LED灯
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原)本想说脏话,奈何已放下
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)从 Java 代码到 Java 堆
  • .Net中wcf服务生成及调用
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @Value读取properties中文乱码解决方案
  • [ 数据结构 - C++]红黑树RBTree
  • [145] 二叉树的后序遍历 js
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [20161214]如何确定dbid.txt
  • [2019红帽杯]Snake