JSON 语法详解:轻松掌握数据结构(上)

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 1. 什么是 JSON?
    • JSON 的定义和特点
    • JSON 与其他数据格式的比较
  • 2. JSON 的语法
    • 数据结构:对象、数组、字符串、数字、布尔值、 null
    • 键值对的表示
    • 数组的表示
  • 3. JSON 的解析和生成
    • 使用 JavaScript 解析和生成 JSON

1. 什么是 JSON?

JSON 的定义和特点

  1. JSON 的定义:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript 对象表示法(JavaScript Object Notation),常用于 Web 开发中。
  2. JSON 的特点:
  • 轻量级:JSON 格式简单,易于阅读和编写,并且占用的存储空间较小
  • 跨平台:JSON 是一种跨平台的数据格式,可以在不同的编程语言和系统之间进行数据交换。
  • 易于解析:JSON 格式易于解析,可以使用各种编程语言中的标准库或第三方库来解析 JSON 数据。
  • 支持嵌套:JSON 支持嵌套结构,可以表示复杂的数据结构,如数组、对象等。
  • 可扩展性:JSON 可以根据需要进行扩展,添加自定义的属性或方法。

在这里插入图片描述

总的来说,JSON 是一种简洁、灵活、易于使用的数据交换格式,在 Web 开发中得到了广泛的应用。

JSON 与其他数据格式的比较

以下是 JSON 与其他数据格式的比较,使用表格的形式进行详细的解释和说明:

数据格式JSONXMLYAML
定义JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于 JavaScript 对象表示法XML(Extensible Markup Language)是一种可扩展的标记语言,用于存储和交换结构化数据YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化语言
特点轻量级、跨平台、易于解析、支持嵌套、可扩展性可扩展性、自定义性强、适用于大规模数据存储和交换简洁、易于阅读、适用于配置文件和数据存储
语法使用键值对表示数据,值可以是字符串、数字、对象、数组等使用标记和属性来描述数据,标记用于定义数据的类型和结构使用缩进和冒号表示数据的层次结构,类似于 Python 语法
可读性简洁、易于阅读和理解相对复杂,需要理解标记和属性的含义简洁、易于阅读和理解
可扩展性支持自定义属性和方法,可以根据需要进行扩展可扩展性强,可以自定义标记和属性可扩展性较弱,不支持自定义数据类型
应用场景Web 开发、移动应用开发、数据交换、配置文件等大规模数据存储和交换、企业级应用、SOAP 协议等配置文件、数据存储、自动化任务等

需要注意的是,每种数据格式都有其优缺点和适用场景,具体使用哪种数据格式取决于项目的需求和技术栈。在选择数据格式时,需要考虑数据的大小、可读性、可扩展性、解析性能等因素。

2. JSON 的语法

数据结构:对象、数组、字符串、数字、布尔值、 null

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它的语法基于 JavaScript 对象的表示形式。

JSON 数据结构包括以下几种类型:

  1. 对象(Object):对象是由键值对组成的无序集合。键是一个字符串,值可以是字符串、数字、布尔值、对象、数组或 null。对象用花括号"{ }“表示,键值对用冒号”:"分隔,键与值用逗号,分隔。
  2. 数组(Array):数组是一组有序的元素列表。数组用方括号"[ ]"表示,元素之间用逗号,分隔。
  3. 字符串(String):字符串是由双引号" "括起来的一系列字符。可以使用转义字符来表示特殊字符。
  4. 数字(Number):数字可以是整数或浮点数。整数可以是十进制、八进制(以"0"开头)或十六进制(以"0x"开头)。浮点数可以使用科学计数法表示。
  5. 布尔值(Boolean):布尔值只有两个值:true(表示真)或 false(表示假)。
  6. nullnull 表示空值或未定义的值

以下是一个 JSON 示例:

{
  "name": "John Doe",
  "age": 30,
  "isStudent": true,
  "subjects": ["数学", "计算机科学"]
}

在这个示例中,“name”、“age”、"isStudent"和"subjects"是对象的键,它们的值分别是字符串、数字、布尔值和数组。

键值对的表示

在 JSON 中,键值对是通过对象表示的。对象是由花括号"{ }“括起来的一组键值对,键与值之间用冒号”:"分隔,键与值用逗号,分隔。键是一个字符串,值可以是字符串、数字、布尔值、对象、数组或 null。

以下是一个 JSON 对象的示例:

{
  "name": "John Doe",
  "age": 30,
  "isStudent": true,
  "subjects": ["数学", "计算机科学"]
}

在这个示例中,“name”、“age”、"isStudent"和"subjects"是对象的键,它们的值分别是字符串、数字、布尔值和数组。

数组的表示

在 JSON 中,数组是通过方括号"[ ]"表示的。数组是一组有序的元素列表,元素之间用逗号,分隔。

以下是一个 JSON 数组的示例:

["数学", "计算机科学", "物理"]

在这个示例中,“数学”、"计算机科学"和"物理"是数组的元素,它们都是字符串类型。数组可以包含不同类型的元素,包括字符串、数字、布尔值、对象或数组。

3. JSON 的解析和生成

使用 JavaScript 解析和生成 JSON

在 JavaScript 中,我们可以使用 JSON.parse()方法来解析 JSON 字符串,并将其转换为 JavaScript 对象。我们也可以使用 JSON.stringify()方法将 JavaScript 对象转换为 JSON 字符串。

以下是使用 JavaScript 解析和生成 JSON 的示例代码:

解析 JSON 字符串:

let jsonString = '{"name": "John Doe", "age": 30, "isStudent": true, "subjects": ["数学", "计算机科学"]}';

let jsonObject = JSON.parse(jsonString);

console.log(jsonObject); // 输出:{ name: 'John Doe', age: 30, isStudent: true, subjects: [ '数学', '计算机科学' ] }

在这个示例中,我们首先定义了一个 JSON 字符串 jsonString,然后使用 JSON.parse()方法将其解析为 JavaScript 对象 jsonObject。最后,我们使用 console.log()方法输出解析后的对象。

生成 JSON 字符串:

let person = { name: "John Doe", age: 30, isStudent: true, subjects: ["数学", "计算机科学"] };

let jsonString = JSON.stringify(person);

console.log(jsonString); // 输出:{"name":"John Doe","age":30,"isStudent":true,"subjects":["数学","计算机科学"]}

在这个示例中,我们首先定义了一个 JavaScript 对象 person,然后使用 JSON.stringify()方法将其转换为 JSON 字符串 jsonString。最后,我们使用 console.log()方法输出生成的 JSON 字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/221487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人、机不同在于变与多

人擅长变,如变模态、变尺度,而机器侧重多,如多模态、多尺度。 人类擅长变化的能力是由于我们的大脑和思维能力的灵活性所决定的。我们可以通过学习和适应,改变我们的态度、行为方式和观点,以适应不同的情境和环境。例如…

python基于轻量级卷积神经网络模型ShuffleNetv2开发构建辣椒病虫害图像识别系统

轻量级识别模型在我们前面的博文中已经有过很多实践了,感兴趣的话可以自行移步阅读: 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…

Python实现FA萤火虫优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

dockerdesktop 制作asp.net core webapi镜像-连接sqlserver数据库容器

1.使用visual studio 创建 asp.net core webapi项目 选择启用docker 会生成Dockerfile文件 2.使用efcore连接数据库&#xff0c;安装efcore的包 <ItemGroup><PackageReference Include"Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version&qu…

MySQL 对null 值的特殊处理

需求 需要将不再有效范围内的所有数据都删除&#xff0c;所以用not in (有效list)去实现&#xff0c;但是发现库里&#xff0c;这一列为null的值并没有删除&#xff0c;突然想到是不是跟 anull 不能生效一样&#xff0c;not in 对null不生效&#xff0c;也需要特殊处理。 解决 …

西安安泰Aigtek——ATA-8152射频功率放大器

ATA-8152射频功率放大器简介 ATA-8152是一款射频功率放大器。其P1dB输出功率100W&#xff0c;饱和输出功率200W。增益数控可调&#xff0c;一键保存设置&#xff0c;提供了方便简洁的操作选择&#xff0c;可与主流的信号发生器配套使用&#xff0c;实现射频信号的放大。宽范围供…

数据结构 | 查漏补缺之

DFS&BFS 哈希表-二次探测再散列法 完全二叉树&深度计算 排序 快速排序-挖坑法 插入、选择、冒泡、区别 插入从第一个元素开始&#xff0c;后面的元素与前面以及排序好的元素比较&#xff0c;插入其中&#xff0c;使其有序&#xff0c;最终效果是前面的有序选择选择…

dockerdesktop推送镜像到dockerhub

1.查看镜像(打开powershell) docker ps2.打tag docker tag pengzx/aspnetcoredocker:v1 pengzx/aspnetcoredocker:v2pengzx/aspnetcoredocker:v1:本地的镜像名加版本号 pengzx/aspnetcoredocker:v2&#xff1a;需要上传的镜像名&#xff08;要以dockerhub的用户名开头/本地镜像…

Hadoop学习笔记(HDP)-Part.14 安装YARN+MR

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

根文件系统的开机自启动测试

一. 简介 本文在之前制作的根文件系统可以正常运行的基础上进行的&#xff0c;继上一篇文章地址如下&#xff1a; 完善根文件系统-CSDN博客 在前面测试软件hello 运行时&#xff0c;都是等 Linux 启动进入根文件系统以后手动输入 “./hello” 命令 来完成的。 我们一般做好产…

Leetcode1423. 可获得的最大点数

Every day a Leetcode 题目来源&#xff1a;1423. 可获得的最大点数 解法1&#xff1a;前缀和 后缀和 基于贪心的思想&#xff0c;要使得获得的点数最大&#xff0c;每次拿卡牌都应该选点数尽量高的卡牌。 但是拿卡牌有限制&#xff0c;每次行动&#xff0c;只可以从行的…

国产智能运维操作系统新选择-浪潮KeyarchOS

1.背景 在CentOS停更&#xff0c;国有企业纷纷摒弃原有的开发与运维工具&#xff0c;全面拥抱国产。我司也顺应号召&#xff0c;更换原有CentOS系统。 在新系统选型上&#xff0c;我司有以下要求&#xff1a; 国产、快速更新迭代、社区活跃&#xff1b;拥有一定知名度&#x…

初级数据结构(一)——顺序表

文中代码源文件已上传&#xff1a;数据结构源码 1、顺序表的特点 1.1、数组 现实中数据记录一般都记录在表格中&#xff0c;如进货单、菜单等&#xff0c;它们的最大特点就是有序。表述中可以用第一项、第二项、第 n 项来描述表格中某个数据或者某串数据。在 C 语言中&#…

uniapp基于u-grid-item九宫格实现uCharts秋云图表展示

uniapp基于uView的UI组件u-grid-item九宫格实现uCharts秋云可视化图表展示 这里使用uView的u-grid-item九宫格组件去显示图标排列 九宫格可以做成多列&#xff0c;移动设备上可以通过左右滑动进行展示 <template><div><div style"text-align: center;font…

报错:Parsed mapper file: ‘file mapper.xml

报错 &#xff1a; Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…

python socket编程7 - 使用PyQt6 开发UI界面新增实现UDP server和client单机通讯的例子

在第五篇中&#xff0c;简单实现了命令行下的 TCP/UDP server和client的单机通讯。 在第六篇中&#xff0c;实现了PyQt6开发界面&#xff0c;TCP协议实现的单机server和client的通讯功能。 这一篇&#xff0c;在第六篇的基础上&#xff0c;增加了UDP server和client的单机通讯功…

我在USC南加大学游戏:真实经历/录取作品集_RoSSo艺术留学

近日&#xff0c;美国Common App最新早申统计数据&#xff1a;早申人数与疫情前相比增加了41%&#xff01;专注于国际艺术教育的RoSSo也发现&#xff0c;2022-2023申请季提交早申的学生中&#xff0c;各类热门院校以及艺术留学专业申请人数均是“涨”声一片&#xff01; 图源官…

30、pytest入门内容回顾

整体结构 解读与实操 pytest30讲主要从四个方面由浅入深的进行解读&#xff0c; 开始 讲解了pytest的概述&#xff0c;安装前的准备工作&#xff08;python,pycharm,pytest&#xff09;&#xff0c;运行方式&#xff08;命令行&#xff09;&#xff0c;断言&#xff08;assert…

Linux(统信UOS) 发布.Net Core,并开启Https,绑定证书

实际开发中&#xff0c;有时会需要为小程序或者需要使用https的应用提供API接口服务&#xff0c;这就需要为.Net Core 配置https&#xff0c;配置起来很简单&#xff0c;只需要在配置文件appsettings.json中添加下面的内容即可 "Kestrel": {"Endpoints": …

nodejs+vue+微信小程序+python+PHP天天网站书城管理系统的设计与实现-计算机毕业设计推荐

本项目主要分为前台模块与后台模块2个部分&#xff0c;详细描述如下&#xff1a;   &#xff08;1&#xff09;前台模块 首页: 首页可以起到导航的作用&#xff0c;用户想要了解网站 &#xff0c;网站首页为用户可以深入了解网站提供了一个平台&#xff0c;它就向一个“导游”…