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

【知识科普】JSON数据格式详细介绍

文章目录

    • 一、JSON 数据结构的基本组成
    • 二、JSON 支持的数据类型
    • 三、JSON 对象(Object)
      • 示例:
    • 四、JSON 数组(Array)
      • 示例:
    • 五、JSON 嵌套结构
      • 示例:用户列表
    • 六、JSON 语法规则总结
    • 七、JSON 与 JavaScript 对象的区别
    • 八、JSON 的常见用途
    • 九、如何验证与格式化 JSON?
    • 十、示例:完整的 JSON 数据结构
    • 十一、JSON起源历史
      • 一、JSON 的起源背景
        • 1. 早期 Web 数据交互依赖 XML
      • 二、JSON 的诞生(2001年左右)
        • 1. JSON 的提出者:**Douglas Crockford**
        • 2. “JSON” 名称的由来
      • 三、JSON 的普及与发展
        • 1. 早期推广与标准化
        • 2. 与 AJAX 技术共同崛起(2004~2005年后)
        • 3. 成为 Web 标准与事实标准
      • 四、JSON 与 XML 的对比(简要)
      • 五、JSON 的现状(截至 2024年)
      • 六、小结:JSON 的历史发展时间线(简化版)
      • 七、JSON 的未来
      • 📌 总结一句话:
    • 总结
    • 相关文献

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript 的一个子集,但已成为一种独立于语言的数据格式,被广泛用于 Web 应用、API 接口、配置文件等场景。

一、JSON 数据结构的基本组成

JSON 数据由以下两种基本结构组成:

  1. 对象(Object):无序的键值对(key-value pairs)集合,使用花括号 {} 包裹。
  2. 数组(Array):有序的值(value)列表,使用方括号 [] 包裹。

二、JSON 支持的数据类型

JSON 中的值(value)可以是以下几种数据类型:

类型说明示例
字符串双引号包裹的 Unicode 字符序列"name": "Alice"
数字整数或浮点数,不使用引号"age": 25
"price": 19.99
布尔值只有 truefalse,不使用引号"isStudent": true
null表示空值,关键字为 null,不使用引号"middleName": null
对象键值对的集合,键必须是字符串,值可以是任意 JSON 支持的类型"address": { ... }
数组值的有序集合,值可以是任意 JSON 支持的类型"hobbies": [ ... ]

⚠️ 注意:

  • JSON 键(key)必须是字符串,且一定要用双引号 " 括起来,不能使用单引号或不用引号。
  • JSON 不支持注释
  • JSON 不支持函数、日期、undefined 等 JavaScript 特有的类型

三、JSON 对象(Object)

  • 格式:{ "key1": value1, "key2": value2, ... }
  • 键值对之间用逗号 , 分隔
  • 键必须是字符串,值可以是任意合法的 JSON 数据类型

示例:

{"name": "张三","age": 30,"isEmployed": true,"address": {"city": "北京","postalCode": "100000"},"hobbies": ["阅读", "游泳", "编程"],"spouse": null
}

解释:

  • "name" 是字符串类型
  • "age" 是数字类型
  • "isEmployed" 是布尔类型
  • "address" 是嵌套的 JSON 对象
  • "hobbies" 是一个字符串数组
  • "spouse" 的值是 null

四、JSON 数组(Array)

  • 格式:[value1, value2, ...]
  • 多个值之间用逗号 , 分隔
  • 数组中的每个元素可以是任意 JSON 类型(包括对象和数组,即支持嵌套)

示例:

["苹果","香蕉","橘子",123,true,null,{"fruit": "西瓜","price": 5.5},[1, 2, 3]
]

解释:

  • 前四个是基本类型:字符串、数字、布尔值、null
  • 第六个是一个 JSON 对象
  • 第七个是一个数字数组(嵌套数组)

五、JSON 嵌套结构

JSON 支持对象中包含对象,对象中包含数组,数组中包含对象等复杂的嵌套结构,非常灵活。

示例:用户列表

[{"id": 1,"name": "李四","isActive": true,"contact": {"email": "lisi@example.com","phone": "13800138000"},"roles": ["user", "editor"]},{"id": 2,"name": "王五","isActive": false,"contact": {"email": "wangwu@example.com"},"roles": ["viewer"]}
]

解释:

  • 这是一个 JSON 数组,包含两个用户对象
  • 每个用户对象中包含基本信息、联系信息(嵌套对象)、角色列表(数组)

六、JSON 语法规则总结

规则说明
数据格式由对象或数组组成,可以互相嵌套
对象使用 {} 包裹,内部是 key: value 对,多个用 , 分隔;key 必须是字符串且用双引号
数组使用 [] 包裹,内部是值的列表,多个用 , 分隔
值类型可以是:字符串、数字、布尔值、null、对象、数组
字符串必须使用双引号 ",不能使用单引号
注释不支持(与 JavaScript 不同)
格式规范通常一行一个键值对可读性更好,但也可压缩成一行(常用于网络传输)

七、JSON 与 JavaScript 对象的区别

虽然 JSON 起源于 JavaScript,但它们并不完全相同:

特性JSONJavaScript 对象
引号键必须用双引号 "可以用单引号或不加引号
注释不支持支持 ///* */
函数不支持支持
日期对象不支持支持
undefined不支持支持
数据交换跨语言通用主要用于 JS 环境

八、JSON 的常见用途

  1. 客户端与服务器通信(如 AJAX 请求、RESTful API)
  2. 配置文件(如 package.json、各种软件配置)
  3. NoSQL 数据存储(如 MongoDB 中的文档)
  4. 前后端数据交换格式
  5. 移动端与服务器交互

九、如何验证与格式化 JSON?

你可以使用以下工具来验证 JSON 是否合法,以及格式化(美化)JSON:

  • 在线工具:
    • https://jsonlint.com/
    • https://www.jsonformatter.org/
  • 编程语言内置支持(如 Python 的 json 模块、JavaScript 的 JSON.parse() / JSON.stringify()
  • IDE / 编辑器插件(如 VS Code 自带 JSON 校验与格式化)

十、示例:完整的 JSON 数据结构

{"company": "科技有限公司","founded": 2020,"isPublic": false,"headquarters": {"country": "中国","city": "深圳","address": "南山区科技园路1号"},"employees": 250,"departments": [{"name": "研发部","manager": "赵六","memberCount": 120},{"name": "市场部","manager": "孙七","memberCount": 30}],"tags": ["科技", "创新", "软件"],"ceo": null
}

十一、JSON起源历史

下面是 JSON 的详细历史发展过程:

一、JSON 的起源背景

1. 早期 Web 数据交互依赖 XML

在 1990 年代末至 2000 年代初,随着互联网的发展,Web 应用程序开始需要在客户端(浏览器)与服务器之间进行数据交换。当时最常用的数据格式是 XML(eXtensible Markup Language,可扩展标记语言)

  • XML 是一种标签式、结构化的数据格式,具有良好的可扩展性和通用性。
  • 但是,XML 存在一些缺点:
    • 冗长:标签重复,导致数据体积大,传输效率低。
    • 解析复杂:在 JavaScript 中解析 XML 相对繁琐,需要使用 DOM 操作,性能不高。
    • 不适合 JavaScript:JavaScript 天生更擅长处理类似对象字面量的结构,而不是标签化的 XML。

因此,开发者开始寻求一种更轻量、更易用、更适合 JavaScript 的数据格式

二、JSON 的诞生(2001年左右)

1. JSON 的提出者:Douglas Crockford
  • Douglas Crockford 是一位美国的软件工程师和技术作家,也是 JavaScript 社区的重要人物。
  • 他在 2001 年左右 开始推广一种基于 JavaScript 对象字面量语法 的数据格式,这就是后来的 JSON
  • 他发现 JavaScript 的对象字面量语法(例如:{ "name": "张三", "age": 25 })本身就非常适合用来表达结构化数据,并且无需额外的语法标签或复杂的结构,非常简洁。

🧠 关键点:JSON 并不是一种全新的语言或格式,而是利用了 JavaScript 语言中已有的“对象字面量”语法,将其标准化,用于数据交换。

2. “JSON” 名称的由来
  • JSON 的全称是 JavaScript Object Notation(JavaScript 对象表示法)
  • 它借用了 JavaScript 的语法形式,但并不依赖于 JavaScript,而是一种与语言无关的数据格式,可以被任何编程语言解析和生成。

三、JSON 的普及与发展

1. 早期推广与标准化
  • Douglas Crockford 在 2002 年左右开始在网上发布关于 JSON 的介绍,并提供了一个简单的 JSON 解析器和验证工具
  • 他在 2006 年左右建立了官方的 JSON 网站:https://www.json.org/,该网站至今仍是 JSON 最权威的说明文档。
  • 他还定义了 JSON 的语法规则,剔除了 JavaScript 中一些不适合数据交换的特性(比如函数、日期对象、未引号的键等),使 JSON 成为一种纯粹的数据交换格式
2. 与 AJAX 技术共同崛起(2004~2005年后)
  • AJAX(Asynchronous JavaScript and XML,异步 JavaScript 和 XML) 技术在 2004~2005 年左右开始流行,它让 Web 页面可以在不刷新的情况下与服务器通信,实现动态交互。
  • 虽然名字里有 XML,但开发者很快发现,使用 JSON 代替 XML 作为 AJAX 请求的 payload(数据负载)更加高效和方便。
  • 于是,JSON 开始被广泛用于:
    • Web 前后端数据通信
    • RESTful API 设计
    • 浏览器与服务器之间的结构化数据交换
3. 成为 Web 标准与事实标准
  • 虽然 JSON 没有像 XML 那样由某个官方组织“标准化”,但它凭借其简洁性、易用性和与 JavaScript 的天然契合,在 Web 开发领域迅速成为事实上的数据交换标准
  • 后来,几乎所有主流编程语言都原生或通过第三方库支持 JSON 的序列化(生成)反序列化(解析)
  • 如今,JSON 已经广泛应用于:
    • Web API(如 REST、GraphQL 的部分实现)
    • 移动应用后端通信
    • NoSQL 数据库(如 MongoDB 使用类 JSON 的 BSON 格式)
    • 配置文件(如 package.jsontsconfig.json 等)
    • 物联网(IoT)、微服务架构等新兴领域

四、JSON 与 XML 的对比(简要)

特性JSONXML
语法基于 JavaScript 对象,简洁基于标签,较冗长
可读性较高(尤其对程序员)一般,标签较多
数据体积更小,传输效率高更大,标签重复
解析难度容易(尤其在 JS 中)较复杂,需 DOM 或 SAX 解析
数据类型支持原生支持字符串、数字、布尔、数组等通常为字符串,需额外转换
扩展性一般(结构固定)强(可通过自定义标签扩展)
注释支持不支持支持(如 <!-- 注释 -->
适用场景Web API、配置、移动通信等文档存储、配置、传统企业系统集成等

五、JSON 的现状(截至 2024年)

  • JSON 是当前世界上最常用的数据交换格式之一,尤其是在 Web 开发、移动后端、API 设计中占据主导地位。
  • 很多现代技术栈默认使用 JSON,比如:
    • RESTful APIs
    • Node.js 后端服务
    • 前端框架(React、Vue、Angular 等与后端通信)
    • 云服务与第三方开放平台(如微信开放平台、阿里云、AWS 等提供的接口大多使用 JSON)
  • JSON 也衍生出一些相关格式,比如:
    • JSON Lines(每行一个 JSON 对象,适合大数据流)
    • JSON Schema(用于描述和验证 JSON 数据结构)
    • BSON(MongoDB 使用的二进制 JSON 格式)

六、小结:JSON 的历史发展时间线(简化版)

时间事件
1990s末–2000初Web 应用兴起,XML 被用作主要的数据交换格式
2001年左右Douglas Crockford 提出基于 JavaScript 对象字面量的轻量级数据格式 —— JSON
2002–2005年Crockford 推广 JSON,发布解析工具与规范,建立 https://www.json.org/
2004–2006年AJAX 技术流行,JSON 逐渐替代 XML 成为 Web 数据交互的首选格式
2006年之后JSON 被几乎所有编程语言支持,成为 Web API、移动开发、配置文件的事实标准
2010s–2020sJSON 成为 RESTful API、NoSQL、微服务、云服务中最主流的数据格式之一

七、JSON 的未来

尽管 JSON 已非常成熟,但随着技术的发展,也面临一些新的挑战和替代方案,比如:

  • 二进制 JSON 格式(如 BSON、MessagePack、Protocol Buffers、FlatBuffers)用于更高性能、更小的数据体积场景;
  • GraphQL 提供了更灵活的数据查询方式,但其底层仍常使用 JSON 传输;
  • YAML 在配置领域有时替代 JSON(因其可读性更强,支持注释);
  • JSON 依然因其简单、通用、跨语言、易解析的特点,继续占据数据交换的主流地位

📌 总结一句话:

JSON 起源于 JavaScript,诞生于 Web 数据交换的需求,由 Douglas Crockford 推广并标准化,凭借其简洁高效的特点,已成为现代软件系统中不可替代的数据交换格式。

总结

JSON 是一种简洁、跨语言、易读写的数据格式,核心是由 对象(键值对)数组(值列表) 构成,支持包括字符串、数字、布尔值、null、对象、数组等数据类型,广泛应用于 Web 开发、API 设计、配置管理等领域。

相关文献

【知识科普】今天聊聊XML这种文件格式

http://www.dtcms.com/a/431735.html

相关文章:

  • wordpress站酷首页wordpress引用jquery
  • 深度学习中的池化(Pooling)技术:原理、实现与应用
  • 手机响应式网站建设公司做电商必须知道的网站
  • Linux任务上下文切换context_switch函数的实现
  • 移动网站开发教学大纲安装wordpress 000
  • 《小米 17:创新与争议并存的科技新品》
  • thinkphp怎么做网站壹六八信息科技网站建设
  • 网站建站企业wex5 后端实现全网站开发
  • leetcode 47 全排列II
  • 注册公司是在哪个网站有哪些做普洱茶网站的
  • Vscode安装Element ui
  • Unity游戏基础-1(安装~工作区构建)
  • 超声波测距
  • 公司网站建设收费惠州市网站建设
  • 彩票的网站怎么做的太原关键词优化软件
  • 做的网站需要什么技术wordpress好用的编辑器插件
  • 数字信号处理 第一章(离散时间信号与系统)【上】
  • 【视觉】使用 mediamtx 怎么支持多个rtsp播放
  • 懂得网站推广东莞市建设安监局网站首页
  • 数据结构与算法9:查找
  • 免杀技术中的shell之 webshell shellcode
  • 网站的系统帮助免费下载教学设计的网站
  • 怎么弄网站朝阳区规划网站
  • 使用 Git Submodule 管理微服务项目:从繁琐到高效
  • OSPF ExStart 状态 概念及题目
  • 如何网站建设 需要详细的步骤长春建站免费模板
  • 北京微信网站建设费用网络设计主要是干什么的
  • 网站互联网推广营销云产品
  • Python题目:日期与数字补零
  • Week09-Clustering聚类k-mean