文章插图
译自: https://twobithistory.org/2017/09/21/the-rise-and-rise-of-json.htmlJSON 已经占领了全世界 。当今,任何两个应用程序彼此通过互联网通信时,可以打赌它们在使用 JSON 。它已被所有大型企业所采用:十大最受欢迎的 web API 接口列表中(主要由 google、Facebook 和 Twitter 提供),仅仅只有一个 API 接口是以 XML 的格式开放数据的 。 1 这个列表中的 Twitter API 为此做了一个鲜活的注脚:其对 XML 格式的支持到 2013 年结束,其时发布的新版本的 API 取消 XML 格式,转而仅使用 JSON 。JSON 也在程序编码级别和文件存储上被广泛采用:在 Stack Overflow(LCTT 译注:一个面向程序员的问答网站)上,现在更多的是关于 JSON 的问题,而不是其他的数据交换格式 。 2
作者: Two-bit History
译者: runningwater
文章插图
XML 仍然在很多地方存在 。网络上它被用于 SVG 和 RSS / Atom 信息流 。Android 开发者想要获得用户权限许可时,需要在其 App 的 manifest 文件中声明 —— 此文件是 XML 格式的 。XML 的替代品也不仅仅只有 JSON,现在有很多人在使用 YAML 或 Google 的 Protocol Buffers 等技术,但这些技术的受欢迎程度远不如 JSON 。目前来看,JSON 是应用程序在网络之间通信的首选协议格式 。
考虑到自 2005 年来 Web 编程世界就垂涎于 “异步 JAVAScript 和 XML” 而非 “异步 JavaScript 和 JSON” 的技术潜力,你可以发现 JSON 的主导地位是如此的让人惊讶 。当然了,这可能与这两种通信格式的受欢迎程度无关,而仅反映出缩写 “AJAX” 似乎比 “AJAJ” 更具吸引力 。但是,即使在 2005 年有些人(实际上没有太多人)已经用 JSON 来取代 XML 了,我们不禁要问 XML 的噩运来的如此之快,以至于短短十来年,“异步 JavaScript 和 XML” 这个名称就成为一个很讽刺的误称 。那这十来年发生了什么?JSON 怎么会在那么多应用程序中取代了 XML?现在被全世界工程师和系统所使用、依赖的这种数据格式是谁提出的?
JSON 之诞生2001 年 4 月,首个 JSON 格式的消息被发送出来 。此消息是从旧金山湾区某车库的一台计算机发出的,这是计算机历史上重要的的时刻 。Douglas Crockford 和 Chip Morningstar 是一家名为 State Software 的技术咨询公司的联合创始人,他们当时聚集在 Morningstar 的车库里测试某个想法,发出了此消息 。
在 “AJAX” 这个术语被创造之前,Crockford 和 Morningstar 就已经在尝试构建好用的 AJAX 应用程序了,可是浏览器对其兼容性不好 。他们想要在初始页面加载后就将数据传递给应用程序,但其目标要针对所有的浏览器,这就实现不了 。
这在今天看来不太可信,但是要记得 2001 年的时候 Internet Explorer(IE)代表了网页浏览器的最前沿技术产品 。早在 1999 年的时候,Internet Explorer 5 就支持了原始形式的 XMLHttpRequest,开发者可以使用名为 ActiveX 的框架来访问此对象 。Crockford 和 Morningstar 能够使用此技术(在 IE 中)来获取数据,但是在 Netscape 4 中(这是他们想要支持的另一种浏览器)就无法使用这种解决方案 。为此 Crockford 和 Morningstar 只得使用一套不同的系统以兼容不同的浏览器 。
第一条 JSON 消息如下所示:
<html><head><script>消息中只有一小部分类似于今天我们所知的 JSON,本身其实是一个包含有一些 JavaScript 的 HTML 文档 。类似于 JSON 的部分只是传递给名为 receive() 的函数的 JavaScript 对象字面量 。
document.domain = 'fudco';
parent.session.receive(
{ to: "session", do: "test",
text: "Hello world" }
)
</script></head></html>
Crockford 和 Morningstar 决定滥用 HTML 的帧(<frame>)以发送数据 。他们可以让一个帧指向一个返回的上述 HTML 文档的 URL 。当接收到 HTML 时,JavaScript 代码段就会运行,就可以把数据对象字面量如实地传递回应用程序 。只要小心的回避浏览器保护策略(即子窗口不允许访问父窗口),这种技术就可以正常运行无误 。可以看到 Crockford 和 Mornginstar 通过明确地设置文档域这种方法来达到其目的 。(这种基于帧的技术,有时称为隐藏帧技术,通常在 90 年代后期,即在广泛使用 XMLHttpRequest 技术之前使用 。 3)
第一个 JSON 消息的惊人之处在于,它显然不是一种新的数据格式的首次使用 。它就是 JavaScript!实际上,以此方式使用 JavaScript 的想法如此简单,Crockford 自己也说过他不是第一个这样做的人 。他说 Netscape 公司的某人早在 1996 年就使用 JavaScript 数组字面量来交换信息 。 4 因为消息就是 JavaScript,其不需要任何特殊解析工作,JavaScript 解释器就可搞定一切 。
推荐阅读
- 红茶的分类 红茶有哪些
- 如何冲泡红茶 正确的红茶冲泡方法新手必看
- 如何选购正宗的正山小种红茶 购买正山小种需要注意这6大点
- 五大最流行的破解工具,让你从此走遍黑客世界
- 武夷山红茶之正山小种红茶的特殊储存方法
- 锡兰红茶怎么泡 正宗的斯里兰卡红茶品饮方法
- 帝国cms后台发布内容自动把内容图片的alt和title替换为文章标题
- 男性的备孕禁忌有哪些 男性的备孕禁忌有什么
- 曲奇的配方比例 曲奇怎么做
- 冷冻的梭子蟹怎么做 梭子蟹怎么做