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 字符串。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web安全】ssrf漏洞的原理与使用

前言 菜某对ssrf漏洞的总结。 ssrf的作用 主要作用:访问外界无法访问的内网进行信息收集。 1.进行端口扫描,资源访问 2.指纹信息识别,访问相应的默认文件 3.利用漏洞或者和payload进一步运行其他程序 4.get类型漏洞利用,传参数…

1.vue学习笔记(vue简介+API风格+开发前的准备)

1.介绍 1.一款用于构建用户页面的JavaScript框架 2.基于HTML、CSS、JavaScript 3.官方文档:cn.vuejs.org2.渐进式框架 1.注重灵活性/可被逐步集成 根据需求场景:1.无需构建步骤,渐进式增强静态的HTML2.在任何页面中作为Web Components嵌入&…

禅道v11.6 基于linux环境下的docker容器搭建的靶场

一、环境搭建 linux环境下的 在docker环境下安装禅道CMS V11.6 docker run --name zentao_v11.6 -p 8084:80 -v /u01/zentao/www:/app/zentaopms -v /u01/zentao/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -d docker.io/yunwisdom/zentao:v11.6二、常见问题 1.删除…

HarmonyOS学习--TypeScript语言学习(二)

本章目录如下: 一、基础类型 二、运算符 三、变量声明 四、类型断言 五、类型推断 TypeScript支持一些基础的数据类型,如布尔型、数组、字符串等,下文举例几个较为常用的数据类型,我们来了解下他们的基本使用。 关于let 我们…

蓝桥杯每日一题2023.12.5

题目描述 1.一步之遥 - 蓝桥云课 (lanqiao.cn) 题目分析 对于本题遵循多了就减少了就加的原则&#xff0c;用while进行计算即可 #include<bits/stdc.h> using namespace std; int x, ans; int main() {while(x ! 1){if(x < 1)x 97;else x - 127;ans ;}cout <&…

Vue学习(一)——实现计数器自增

&#x1f4d1;前言 本文主要是【Vue】——Vue实现的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1a…

Ruff智能物联网网关助力工厂数智化运营,实现产量提升5%

数字化转型是大势所趋&#xff0c;以工业互联网为代表的数实融合是发展数字经济的重要引擎&#xff0c;也是新质生产力的一大助力。工业互联网是新工业革命的重要基石&#xff0c;加快工业互联网规模化应用&#xff0c;是数字技术和实体经济深度融合的关键支撑&#xff0c;是新…

【Polar靶场WEB签到】

题目&#xff1a; <?phperror_reporting(0);$file $_GET[file];if(!isset($file))$file 1;$file str_replace(../, , $file);include_once($file.".php");highlight_file(__FILE__); ?>解答&#xff1a;1、进入index页面&#xff0c;说让你加弟弟&#x…

从0到1实现Flink 实战实时风控系统的经验总结

随着互联网金融的快速发展&#xff0c;实时风控系统成为保障业务安全和用户信任的关键。本文将分享从零开始构建Flink实时风控系统的经验&#xff0c;并提供相关示例代码。 一、搭建Flink环境 首先&#xff0c;我们需要搭建Flink环境。以下是一些基本步骤&#xff1a; 安装Ja…

二百一十二、Flume——Flume实时采集Linux中的目录文件写入到HDFS中(亲测、附截图)

一、目的 在实现Flume实时采集Linux中的Hive日志写入到HDFS后&#xff0c;再做一个测试&#xff0c;用Flume实时采集Linux中的目录文件&#xff0c;即使用 Flume 监听Linux整个目录的文件&#xff0c;并上传至 HDFS中 二、前期准备 &#xff08;一&#xff09;安装好Hadoop、…

springboot整合阿里云oss上传图片,解决无法预览的问题

1.前置工作 需要申请一个域名,需要备案&#xff0c;对接这个踩了不少坑,写的很详细,guan fang tong guo bu 了,各位参考别的博客结合看吧,主要是域名配置,还有看service里面的实现 2.进入控制台 bucket列表 选择bucket 选择域名管理 复制你申请的域名,比如域名:abkhkajs…

周周爱学习之快速排序

快速排序&#xff0c;顾名思义&#xff0c;快速排序是一种速度非常快的一种排序算法 平均时间复杂度为O(),最坏时间复杂度为O()数据量较大时&#xff0c;优势非常明显属于不稳定排序 1.算法描述 每一轮排序选择一个基准点&#xff08;pivot&#xff09;进行分区 让小于基准点…

金融科技走向 Web3 的趋势不可逆转——新加坡金融科技节会后总结(上)

11 月 15 日至 17 日&#xff0c;2023 年度新加坡金融科技节&#xff08;Singapore FinTech Festival&#xff0c;以下简称 SFF&#xff09;在樟宜机场附近的新加坡会展中心&#xff08;Singapore Expo&#xff09;举办。我本人受新加坡金管局的邀请&#xff0c;第一次亲身参与…

BearPi Std 板从入门到放弃 - 后天篇(2)(I2C1读写EEPROM)

简介 基于 BearPi Std 板从入门到放弃 - 后天篇&#xff08;1&#xff09;(I2C1 读取 光照强度)&#xff0c; 使用同一个I2C接口访问EEPROM, 同时读取光照亮度 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: Usart1 I2C : I2C1 光照强度传感器&#xf…

Hive的使用技巧

一.Hive常用交互命令 [zhangflinkflinkv1 hive]$ bin/hive -help1.在Hive命令行里创建一个表student&#xff0c;并插入1条数据 2.“-e”不进入hive的交互窗口执行hql语句 3.“-f”执行脚本中的hql语句 二. Hive参数配置方式 1.查看当前所有的配置信息 hive> set;2.参数的…

[跑代码-遇到问题-报错3]BK-SDM. KeyError: ‘up_blocks.0‘

File "src/kd_train_text_to_image.py", line 790, in mainKeyError: up_blocks.0 出问题的原因 dict acts_tea读到dict acts_stu没有读到dict 原因是 unet_teacher的结构后面直接接down_blocks&#xff08;正常&#xff09;unet_teacher.down_blocks 但是unet的结构…

Android实验:广播实验

目录 广播实验目的实验内容实验要求项目结构代码实现结果展示 广播 Android 应用与 Android 系统和其他 Android 应用之间可以相互收发广播消息&#xff0c;这与发布-订阅设计模式相似。这些广播会在所关注的事件发生时发送。举例来说&#xff0c;Android 系统会在发生各种系统…

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

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

uni-app 微信小程序之swiper轮播图

1. 实现效果 2. 完成代码 <template><view class"components-home"><view style"margin-top:-50rpx;height: 486rpx; position: relative;margin-bottom: 80rpx;"><image srchttps://xxx.com/img/wccQQP.png modewidthFix classpng …

基于STM32驱动的压力传感器实时监测系统

本文介绍了如何使用STM32驱动压力传感器进行实时监测。首先&#xff0c;我们会介绍压力传感器的工作原理和常见类型。然后&#xff0c;我们将介绍如何选择合适的STM32单片机和压力传感器组合。接下来&#xff0c;我们会详细讲解如何使用STM32驱动压力传感器进行数据采集和实时监…