
JSON:从小众技巧到全球通用的数据“快递盒”
在今天的互联网世界里,几乎所有的应用、网页、API 和数据库之间,都有一个共同的“语言”——JSON。它像一只结实又轻便的快递盒,把数据从一端送到另一端。二十多年前,JSON 还只是 JavaScript 里的一个“小技巧”,没人想到它会成为全球数据交换的通用格式。
故事要从 2000 年左右说起。当时网页和服务器之间交换数据,大多使用 XML。XML 格式严谨,语义明确,但写起来像在填写冗长的表格:
<person>
<name>Li</name>
<age>30</age>
</person>
这种结构让机器很满意,却让人类头疼。成对的标签、冗余的层级,让开发者既耗时间又耗精力。就在这样的背景下,Douglas Crockford——一位热衷简化技术的工程师——注意到,JavaScript 对象的语法本身就能清晰表达数据结构:
{ "name": "Li", "age": 30 }
这段写法简短明了,不仅包含了键和值的对应关系,还具备层次化的表达能力。Crockford 于是将这种写法抽离出来,制定了一套严格的语法规则,使其独立于 JavaScript 使用,并取名 JSON(JavaScript Object Notation)。它保留了对象结构的清晰性,省去了 XML 那些成对标签的累赘,让数据在传输和阅读时都显得更轻盈。
真正让 JSON 走向世界舞台的是 2005 年。当年,AJAX 技术在网页开发中迅速走红,网页可以在不刷新整个页面的情况下与服务器交换数据。JSON 成了 AJAX 的完美搭档:它比 XML 更短,传输速度更快;它能直接被浏览器解析成对象;它的可读性让调试和维护都变得轻松。这种“轻量化”的优势,使 JSON 在短短几年内成为 Web API 的首选格式,而 XML 则逐渐退居二线。
JSON 的世界其实很简单。对象用大括号包裹,内部是键值对;数组用方括号表示,可以包含对象或基本数据;值的类型包括数字、字符串、布尔值、数组、对象和 null
。例如:
{
"name": "Li",
"age": 30,
"skills": ["writing", "coding", "teaching"],
"married": true
}
这就像一本小小的“数据说明书”,清晰地告诉你每个字段的名字和内容。正是这种直观性,让 JSON 不仅适合机器处理,也方便人类直接阅读和编辑。
虽然名字里有 JavaScript,但 JSON 与编程语言无关。几乎每一种主流编程语言——Python、Java、Go、C#、PHP——都能读写 JSON 数据。这意味着它像统一规格的快递盒,不管是在中国寄、在美国收,包装和规则都是一致的,任何地方都能拆开看懂。
如今,JSON 的应用范围远远超出网页与服务器之间的通信。许多现代软件都用它作为配置文件的格式,例如 VSCode 的用户设置、Node.js 项目的 package.json。在 API 设计中,它是 REST 和 GraphQL 等接口的事实标准。而在数据存储领域,像 MongoDB 这样的 NoSQL 数据库,本质上就是用 JSON 或它的二进制变种 BSON 来保存信息。
JSON 的流行并不是因为它发明了全新的技术,而是它抓住了“够用”与“通用”的平衡。对人类来说,它简单、易读,不需要额外的解析工具;对机器来说,它规则明确、解析迅速,几乎不会产生歧义。它既可以承载复杂的数据结构,又能保持轻便和清晰,让数据在全球的网络中高效流动。
如果 XML 像厚重的公文信封,庄严而正式,那么 JSON 就是随处可用的快递盒——轻便、实用,谁都能拆得开。它的力量来自于简洁,也来自于它作为“共同语言”的角色