副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式

发布时间:2026/10/30 17:36:00

副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式 点此查看所有教程、项目、源码导航文章目录1. 背景2. JSON 的历史与发展过程2.1 诞生之前XML 一统江湖2.2 JSON 的诞生3. 常见数据格式简单对比JSON、XML、YAML3.1 XML3.2 YAML3.3 JSON4. JSON 基础语法与规范4.1 JSON 支持的数据类型4.2 强制语法规则非常重要5. JSON 的优势6. JS 中操作 JSON 的两个 API6.1 JSON.stringify () 序列化6.2 JSON.parse () 反序列化7. 小结1. 背景前面我们学习了浏览器本地存储localStorage和sessionStorage我们发现一个限制本地存储只能保存字符串。如果我们想要保存对象、数组直接存入会变成[object Object]数据损坏无法读取。同时在前后端交互的时候服务端和浏览器之间也需要一套统一的文本格式来传递结构化数据JSON 就是用来解决这类问题的。JSON 全称JavaScript Object Notation翻译为 JavaScript 对象表示法。很多初学者会误以为它是 JS 语言的一部分这里重点说明JSON 是独立的文本格式不是 JS 语法只是它的语法借鉴了 JS 对象字面量写法现在几乎所有编程语言都支持解析和生成 JSON是互联网最主流的数据交换格式JSON。2. JSON 的历史与发展过程2.1 诞生之前XML 一统江湖在 2000 年前后网页和服务端之间传递结构化数据主流方案是 XML。XML 1998 年由 W3C 发布它源自更早的 SGML 标记语言设计目标偏向文档描述标签成对、结构严谨自带校验、命名空间等能力早期的 SOAP 接口、RSS 订阅、早期银行、政务系统大量使用 XML。但是 XML 标签冗余、体积大、解析繁琐在浏览器 JS 环境里解析起来很麻烦。2.2 JSON 的诞生JSON 由 Douglas Crockford道格拉斯・克罗克福特在 2001 年提出最早在 State Software 公司内部使用同年发出第一条 JSON 消息。他从 JS 对象字面量语法里挑选了一个安全、干净的子集把它定义成一套独立的数据交换格式取名 JSON。2006 年JSON 正式发布 RFC 4627 标准2014 年更新为 RFC 7159成为正式通用标准。随着 AJAX 技术普及网页异步请求大量兴起JSON 凭借在 JS 里天然友好的优势快速普及到 2010 年前后在 Web 接口领域JSON 已经超过 XML成为首选格式。补充JSON 没有完全淘汰 XML在一些需要强文档校验、复杂文档结构的场景XML 至今仍在使用。3. 常见数据格式简单对比JSON、XML、YAML3.1 XMLXML 是标记语言依靠成对标签包裹数据。示例username小红/nameage20/agehobby看书/hobby/user特点标签冗余、体积大支持注释、属性、命名空间、文档校验解析代码复杂适合文档、复杂协议、政务、金融旧系统。3.2 YAMLYAML 是配置文件格式依靠缩进表达结构常见于前端打包、Docker、K8s 配置文件。示例name:小红age:20hobby:-看书-跑步特点写法简洁可读性很好但是缩进严格缩进错一点就解析失败一般多用于配置很少用来做前后端接口传输。3.3 JSON我们后面会重点学习结构紧凑适合网络传输、本地存储、接口交互。对比下格式主要用途优点缺点XML老旧接口、文档、金融、政务规范严谨、支持校验标签多、笨重、解析慢JSONWeb 接口、浏览器本地存储轻量、JS 原生友好、解析快不支持注释、语法严格YAML项目配置文件简洁、可读性高缩进敏感不适合网络传输4. JSON 基础语法与规范JSON 只有两种顶层结构对象 {}、数组 []。4.1 JSON 支持的数据类型字符串必须双引号数字整数、小数不需要引号布尔true /false小写null空值对象、数组❌ JSON不支持函数、undefined、注释、变量、运算表达式。4.2 强制语法规则非常重要对象的属性名key必须使用双引号不能单引号不能不加引号字符串类型的值也必须双引号不能写注释末尾不能多余逗号✅ 标准 JSON 示例{name:小红,age:20,isStudent:true,hobby:[看书,跑步],address:null}❌ 错误写法这些都不是合法 JSON{name:小红,age:20,say:function(){}}区分重点JS 对象可以写单引号、可以不加引号、可以放函数JSON 是严格文本规则更苛刻。5. JSON 的优势轻量紧凑相比 XML同样的数据JSON 文本更短占用带宽更少网络传输更快JS 原生友好浏览器内置JSON.stringify()、JSON.parse()不需要额外引入第三方库跨语言通用Java、Python、PHP、Go 等几乎所有编程语言都有成熟的 JSON 解析工具结构清晰对象、数组的结构和我们日常编程的数据结构一一对应上手简单解析速度快格式简单机器解析成本更低6. JS 中操作 JSON 的两个 API这两个是浏览器内置方法用来在 JS 内存数据和 JSON 字符串之间互相转换也是我们下一篇本地存储实战的核心。6.1 JSON.stringify () 序列化JS 对象 / 数组 → JSON 字符串varuser{name:小红,age:20};varjsonStrJSON.stringify(user);console.log(jsonStr);运行结果得到的结果是一段字符串就可以存入 localStorage。6.2 JSON.parse () 反序列化JSON 字符串 → JS 对象 / 数组varobjJSON.parse(jsonStr);console.log(obj);console.log(obj.name);运行结果读取本地存储拿到 JSON 字符串之后用这个方法转回 JS 对象才能正常读取属性。7. 小结JSON 全称 JavaScript Object Notation是独立的轻量级文本交换格式不是 JS 语法。历史XML 先行2001 年 JSON 诞生2006 标准化随 AJAX 普及成为 Web 主流格式。对比XML 适合文档、老旧系统YAML 适合配置JSON 适合接口、本地存储。JSON 语法严格key 必须双引号不支持注释、函数、undefined。两个核心 APIJSON.stringify序列化、JSON.parse反序列化用来配合本地存储保存对象、数组。
延伸阅读

更多相关文章

2026/10/30 17:36:00

副队长JavaScript教程(66)-本地存储实战:待办事项网页的开发

点此查看 所有教程、项目、源码导航 文章目录1. 需求说明2. 实现思路3. 分步讲解3.1 HTML 结构、CSS样式3.2 获取页面元素3.3 读取本地存储里面的待办数据3.4 封装渲染函数3.5 新增待办逻辑4. 完整可运行代码5. 重点复盘1. 需求说明 我们来实现一个极简的待办事项,…

2026/10/30 17:36:00

副队长JavaScript教程(64)-本地存储:localStorage 与 sessionStorage

点此查看 所有教程、项目、源码导航 文章目录1. 背景2. WebStorage 基础特点3. localStorage 持久化存储4. sessionStorage 会话存储5. localStorage 和 sessionStorage 对比6. 入门常见坑点6.1 存入的值,都会自动转为字符串6.2 不能直接存对象、数组6.3 只能在浏览…

2026/10/30 17:36:00

副队长JavaScript教程(63)-BOM之窗口大小与页面滚动

点此查看 所有教程、项目、源码导航 文章目录1. 背景2. 获取浏览器窗口可视区域大小2.1 innerWidth、innerHeight2.2 outerWidth、outerHeight(了解)3. 窗口缩放事件 resize4. 获取页面滚动距离 scrollX、scrollY5. 控制页面滚动的方法5.1 scrollTo (x, …

2026/10/30 18:51:10

农业物联网与遥感技术在苗情灾情监控系统中的应用

1. 苗情灾情监控系统概述在现代农业生产中,及时掌握作物生长状况和灾害发生情况是提高农业生产效率的关键。苗情灾情监控系统通过整合物联网、遥感技术和数据分析手段,为农业生产者提供从田间到决策的全链条支持。这套系统能够实时监测作物生长参数、识别…

2026/10/30 18:51:10

防爆气象检测系统:集成化设计与工业安全应用

1. 防爆气象检测系统概述在石油化工、矿山开采、危化品存储等高危行业中,环境气象参数的实时监测直接关系到生产安全。传统气象站设备体积庞大、安装复杂,且难以满足防爆区域的特殊要求。而将气象监测功能集成到防爆屏幕中的解决方案,正在成为…

2026/10/30 18:51:10

R24烧写工具自动检测与多模块并发下载实践指南

简介:ResearchDownload_R24.0.0001 是一款面向手机维修与刷机从业者的烧写工具软件,用于把电脑端程序写入手机硬件模块,适合需要批量处理多台设备的场景,使用前需安装USB驱动并通过数据线或串口线缆连接手机。软件支持多COM口并行…

2026/10/30 18:51:10

OG05B1B全局快门与SCCB深度解析:硬件级图像同步与可靠寄存器控制

简介:本资源为豪威科技OG05B1B黑白CMOS图像传感器的官方技术手册PDF,面向嵌入式视觉系统工程师、机器视觉开发者及工业相机方案设计人员,解决高精度成像选型、全局快门参数配置与红外低照度性能评估等核心问题。手册完整涵盖PureCelPlus-S像素…

2026/10/30 18:51:09

微电网谐波注入主动保护技术原理与工程实践

1. 项目概述微电网作为分布式能源接入的重要形式,其保护系统的可靠性直接关系到供电安全。传统被动式保护在新能源高渗透率场景下存在灵敏度不足、选择性差等问题。基于谐波注入的主动保护技术通过在故障时主动注入特定频率谐波信号,利用信号传播特性实现…

2026/10/30 18:46:09

埃夫特离线编程实战:从虚拟仿真到产线节拍优化

简介:本资源是一份面向工业自动化工程师、机器人集成商及高校教学人员的埃夫特tVR_Factory离线编程软件技术详解文档,聚焦工业机器人虚拟仿真与离线编程核心能力,解决现场调试风险高、轨迹精度难保障、多品牌适配复杂等实际工程问题。文档为单…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑