JSON 的兴起与崛起

HTML5 herman 183浏览 0评论

JSON 已经占领了全世界。如今,任何两个应用程序通过互联网相互通信时,他们很可能使用的就是 JSON。JSON 已被所有大型企业采用。在十大最受欢迎的网络 API 中,主要由 Google,Facebook 和 Twitter 等主要公司提供的 API 列表,只有一个 API 以 XML 而不是 JSON 的形式公开数据。 Twitter 从在 API 列表中作了一个说明,它支持 XML 直到 2013 年,当时它发布了一个新版本的 API,它删除了 XML,转而专门使用 JSON。JSON 也被编程等级和文件广泛采用。根据 Stack Overflow 上的数据显示,现在有更多关于 JSON 的问题,而不是 XML 相关的问题更多。

JSON 的发展趋势

从上图中可以明显的看到,json 越来越受欢迎,而 xml 的使用则一直在下降!

当然并不是说 xml 完全无用。很多应用还在采用 xml ,包含一些 SVG、RSS、Atom提要,Android 的应用需要用户许可等方面使用的都还是 xml。XML 也不是 JSON 的唯一替代品,有些人现在使用 YAML 或 Google 的 Protocol Buffers 等技术。但这些远不如 JSON 那么受欢迎。目前,JSON 似乎是通过互联网与其他程序进行通信的首选格式。

在 2005 年 ajax 兴起的时候,当初采用的是 xml,所以 ajax 中带有一个 x。而现在的 ajax 技术多使用的是 json 的方式传递数据,因此 ajax 应该改为 ajaj。

JSON 的诞生

第一个 JSON 消息是在 2001年4月发送的。由于这是计算中历史上重要的时刻,因此消息是从Bay-Area车库中的计算机发送的。Douglas Crockford 和 Chip Morningstar 是一家名为 State Software 的技术咨询公司的联合创始人,他们聚集在 Morningstar 的车库里测试了使用 JSON 传递信息的这一想法。

Crockford 和 Morningstar 试图在“AJAX”这个术语被创造之前很好地构建 AJAX 应用程序。浏览器对他们尝试的内容的支持并不友好。他们希望在初始页面加载后将数据传递给他们的应用程序,但实验过后他们没有找到一种方法来实现这一点,尤其是想在所有的浏览器中被支持。

现在我们可能很难相信。但是在 2001 年 Internet Explorer(IE浏览器)是最流行的浏览器。早在 1999 年,Internet Explorer 5 就支持 XMLHttpRequest 的原始形式,程序员可以使用名为 ActiveX 的框架进行访问。Crockford 和 Morningstar 已经使用这项技术为他们的应用程序获取数据,但他们无法在 Netscape 4 中使用相同的解决方案。所以Crockford 和 Morningstar 必须使用在两种浏览器中都能够支持的方案。

第一条 JSON 消息用法如下所示:

<html><head><script>
    document.domain = 'fudco';
    parent.session.receive(
        { to: "session", do: "test",
          text: "Hello world" }
    )
</script></head></html>

从上面可以看出,消息中只有一小部分类似于 JSON。该消息本身实际上是一个包含一些 JavaScript 的 HTML 文档。类似于 JSON 的部分只是传递给一个名为 receive 的函数。

Crockford 和 Morningstar 决定使用基于帧的技术,有时也被称为隐藏帧技术,该技术在90年代末广泛实施了 XMLHttpRequest 及时之前被普遍使用过。这种技术可以在 URL 上指出一个框架,该框架将返回如上所述的 HTML 文档。收到 HTML 后,将运行 JavaScript,将对象文字传递回应用程序。该技术也有一些局限性。那就是在使用时必须小心翼翼地回避浏览器保护以防止子窗口访问其父窗口。Crockford 和 Mornginstar 通过明确设置文档域来做到这一点。

当时所有人都对这第一个 JSON 消息感到惊讶,但是 Crockford 本人却说他不是第一个这样做的人。他说 Netscape 的某人早在 1996 年就使用 JavaScript 数组文字来传达信息,而且他说他使用的 JSON 并不是一种新的数据格式,JavaScript 解释器可以完成所有解析操作。

第一个 JSON 消息实际上与 JavaScript 解释器发生了冲突。这是因为第一个 JSON 消息中的 do 是 JavaScript 中的保留关键字。从 ECMAScript 6 开始就有 64 个保留关键字。

Crockford 和 Morningstar 意识到 JSON 将来可能被广泛的使用,所以他们想为 JavaScript 标记语言命名他们的格式“JSML”,但发现这个缩写词已被用于 Java 语音标记语言。所以他们决定采用“JavaScript Object Notation”即 JSON。他们开始向其他用户推广它,但很快发现其他开发者不愿意冒险使用这种缺乏官方规格的未知技术。

2002年,Crockford 购买了域名 JSON.org 并提出了 JSON 语法和解析器的示例实现。该网站仍处于运行状态,但它现在包含了2013年批准的 JSON ECMA 标准的重要链接。在建立网站后,Crockford 没有做更多的推广 JSON,但很快发现许多人都在提交 JSON 解析器实现各种不同的编程语言。JSON 的血统明显与 JavaScript 相关联,但是实验过后,发现 JSON 可以适用于所有语言之间的数据交换。

AJAX

JSON 在 2005 年得到了很大的推动。那一年,一位名叫 Jesse James Garrett 的网页设计师和开发人员在博客文章中创造了“AJAX”一词。他小心翼翼地强调,AJAX 不是任何一种新技术,而是“几种技术的结合,每种技术本身都在蓬勃发展,以强大的新方式汇集在一起​​。一时间“AJAX”这种技术受到了很多 Web 应用程序开发者的青睐。他的博客文章接着描述了开发人员如何利用 JavaScript 和 XMLHttpRequest 构建新的应用程序,这些应用程序比典型的网页更具响应性和有状态。他指出Gmail 和 Flickr 是已经采用 AJAX 技术的网站的最好的例子。

“AJAX”中的“X”代表XML。Garrett 指出 JSON 是完全可以接受的 XML 替代品。他写道:“XML 是用于将数据输入和输出 AJAX 客户端的最完善的方法,但是没有理由使用 JavaScript Object Notation 等技术或任何类似的数据结构方法来实现相同的效果。 

当有人发现他们可以轻松地使用 JSON 来构建 AJAX 应用程序时,就不再对 XML 感兴趣。意外的是 xml 的发展导致了 JSON 的普及。当然也有人反对 JSON,认为 JSON 是重复造轮子。

到 2014 年,JSON 已经由 ECMA 标准和 RFC 正式指定。它有自己的 MIME 类型。JSON 已经进入了大联盟。

为什么JSON比XML更受欢迎?

JSON.org上,Crockford总结了JSON相对于XML的一些优势。他写道,JSON对于人类和机器来说都更容易理解,因为它的语法极小且结构可预测。Crockford还声称JSON的另一个巨大优势是JSON被设计为数据交换格式。它的目的是从一开始就在程序之间传递结构化信息。XML虽然用于相同的目的,但最初被设计为文档标记语言。

参考资料

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » JSON 的兴起与崛起