无论你是前端还是后端工程师,在日常开发中几乎天天都要与 JSON 打交道。它到底是什么,为什么能成为数据交换的“通用语言”?今天我们就来彻底讲清楚这个问题。

JSON 的定义
JSON 的全称是 JavaScript Object Notation,中文称为 JavaScript 对象表示法,本质上是一种轻量级的数据交换格式。它已成为 ECMA 标准,所有主流编程语言都能解析和生成 JSON。前后端数据传递、配置文件、日志存储……处处都能看到它的身影。为什么程序员如此偏爱 JSON?一句话概括:用更少的代码,换来更快的处理速度。
JSON 数据由“键值对”构成,多个键值对之间用逗号分隔。一个关键规则:键和字符串值必须用双引号包围。来看一个最简单的示例:
{
"name": "Apifox",
"age": 2,
"city": "Guangzhou"
}
JSON 的含义和数据类型
从语言层面看,JSON 可以将任何 JavaScript 对象序列化成一个字符串,通过网络传输给另一台机器。这个字符串的格式就是双引号包裹的键值对组合。值可以包含哪些类型?非常丰富:字符串、数字、布尔值、null、对象、数组。下面逐一介绍。
- 字符串:对应 JavaScript 的
string,支持反斜杠转义。示例:{"name": "Apifox"} - 数字:对应
number,整数或浮点数均可。示例:{"id": 48, "price": 17.95} - 布尔值:对应
boolean,注意不要加引号。示例:{"allowLogin": false} - null:表示空值。示例:
{"address": null} - 对象:用花括号
{}包裹,可以嵌套。示例:{"category": {"id": 675442, "name": "小狐"}} - 数组:用方括号
[]包裹,无序集合。示例:{"list": [{"name": "Lihua", "age": 22}, {"name": "Zhangsan", "age": 25}]}
下面是一个完整的 JSON 数据样例,包含了上述所有类型:
{
"name": "Simon",
"age": 2,
"isMale": true,
"hobbies": ["reading", "learning", "traveling"],
"address": {
"city": "Guangzhou",
"postCode": "510000"
},
"email": null
}
JSON 数据的使用场景
JSON 的应用范围非常广泛。最经典的场景就是前后端数据传输:网页向服务器发起请求,服务器返回 JSON,前端直接解析并渲染页面。这种模式驱动着几乎所有现代 Web 应用。移动 App、桌面软件、各类互联网服务,底层的数据交换也大量依赖 JSON。为什么大家都不约而同选择它?三个核心优势:
- 简洁易读:语法直观,人类和机器都能快速理解。
- 解析速度快:相比其他文本格式,JSON 的解析效率更高,尤其是在 JavaScript 环境中。
- 兼容性好:与 JavaScript 共享语法,天然适配浏览器环境。
JSON 与 XML 的对比
在 JSON 出现之前,XML 是数据交换的绝对主角。但 XML 的规范过于复杂——标签闭合、命名空间、DTD、Schema……编写繁琐,解析也较慢。JSON 的语法更轻巧,读写更舒适,解析速度明显占优。因此,大多数新项目都转向了 JSON。
不过,XML 并没有被淘汰。在某些特定领域(比如金融报文、SOAP 接口、配置复杂的文档系统),XML 的严格性和扩展性仍然不可替代。它能描述更复杂的数据结构,支持自定义数据类型。所以在实际开发中,不存在“谁取代谁”的绝对答案,根据场景选择最合适的工具即可。
关于 JSON 的其他补充
除了基础用法,还有几个与 JSON 紧密相关的概念值得了解:
- JSONP:JSON with Padding 的缩写,利用
script标签的跨域特性来获取 JSON 数据,是早期解决跨域问题的常见手段。 - JSON Schema:用于验证和描述 JSON 数据结构的规范。你可以定义字段类型、是否必需、取值范围等约束条件,确保数据质量。
- JSON Web Token (JWT):基于 JSON 的开放标准,用于在网络上安全传输声明(比如用户身份信息)。现已成为身份认证和授权的标准方案。
最后提醒一句:JSON 虽然好用,但并非绝对安全。如果直接解析用户提供的 JSON,可能存在 XSS 注入或其他安全风险。务必对数据来源进行校验和清洗,不要将不可信数据直接插入页面。
小结
JSON 之所以能成为现代编程的“基本功”,凭借的就是简洁、快速、兼容性好。无论是编写 API 接口、存储配置文件,还是进行前后端联调,掌握 JSON 都是入门必修课。格式并不复杂,但细节必须严谨——双引号、逗号、类型匹配,稍有差错都可能导致解析失败。多动手编写练习,很快就能熟练运用。
知识扩展
上文介绍了 JSON 的核心概念,如果想深入了解 API 设计的相关知识,还可以参考以下内容:
- API 接口定义:如何定义高质量的 API 接口
- 了解 REST 与 RPC 的区别,让你的 API 设计更高效
- JSON 数据格式(详解版)
