JSON 为王,为什么 XML 会慢慢淡出人们的视野?
目前全球信息基础设施的特点是,拥有大量的数据交换格式。这一点也不奇怪。互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实。但我仍然相信,在这一领域还有一股较强的历史趋势,推动 JSON 数据格式的应用。
十年前,XML是主要的数据交换格式。它的出现,尤如一股清新的空气,以及令人惊喜的 SGML(标准通用标记语言),是一个巨大的进步。它使人们能够做到以 前想都不敢想的事情,比如通过HTTP连接交换微软Office文档,你的周围布满 XML 文档,你很容易忽略这把“互联网瑞士军刀”的重要性。
这已经不是什么秘密了,但在过去的几年里,在数据交换的世界,一个大胆的改造已经开始。更轻巧,更省带宽的,密集型的JSON(JavaScript对象标 记),已不仅仅成为XML的另外一套可选技术,而是可能成为一个潜在的完全成熟的接班人。现在各种各样的力量汇聚在一起,让XML的使用越来越少,并视 JSON作为未来的全球数字架构的首选格式。我认为,唯一的问题是这个时刻何时到来。
我坚信,这种转变可以归因于四大趋势,我将依次讨论:
不管你喜欢与否,今天的网络环境在很多重要方面仍然严重孤立。有大量你将永远接触不到的信息在那里(如身份验证信息,应该被加密)。但像eBay这样的公司开始走向开放,API已经作为一种通用的力量。
这里有一些例子,像Twitter, Facebook和LinkedIn和其他无数的机构 a)基于信息服务来交换数据 (b 对开放各种各样的信息给第三方越来越有兴趣。大量的数据永远看不到出头之日(因为他们是孤立的) 。现在我只想说,这些API是一股不可忽视的力量,并改变着这个空间,在网络上留下他们的标记。
这里很多原始数据仍然使用XML而不是JSON,像可编程Web和其他数据表明,XML仍然是API的主要数据格式,但是“大JSON”正在快速上升。 Twitter的API大约两年前开始就只支持JSON了。Foursquare也跟进了。
Scott Gilbertson大致同意我的判断: “当涉及到数据API服务时, XML仍然是最常用的格式,但JSON是的增长更快。尽管还有很多XML格式的API,但最近的API ,越来越倾向于使用JSON格式。这样的例子还有很多…… 企业正在迅速从XML迁移到JSON”。 Scott一年多前就发表了他的观点,但没有什么迹象表明他的观点有任何变化。
简而言之:APIs 已经不再是一个很酷的事情或Web的附属物,用Gilbertson的话来说,是“互联网上的一等公民”。最重要的是,REST正在替代SOAP作为数据 传输协议。XML跟REST不太兼容,当然,如果SOAP使用率急剧下降,那么XML的使用量将与它一起萎缩。
2. 大数据
JSON 的崛起在数据库方面也扮演着关键角色,这是另一个对XML不好的预兆。其实大数据本身并没有首选的数据交换格式。不过,对于大数据来说JSON可能更特殊 一点。JSON是一种新兴的以网络为中心,所谓的“NoSQL”数据库的首选格式。这是因为:a)JSON适应大规模可扩展性的数据库; b)天生就是为了无关系数据而设计的; c))面向Web是他们的核心;
这是有很多知名的例子,像MongoDB,CouchDB,和Riak。这三种数据库都基于JSON,横向可扩展,由Web驱动。
其他的例子比比皆是:亚马逊DynamoDB的架构是完全基于REST/JSON的。 Neo4j,图形数据库,有一个REST/JSON API,没有对应XML的支持。 HBase的的REST架构目前支持XML,但这种支持正走在被废弃的路上。
一 段时间以来,通过各种手段查询MySQL,并得到JSON的返回结果,这一直是可能的。(有很多方法可以做到这一点,但MySQL 4.1中的JSON格式的命令无疑是最方便的)。这同样适用于Postgres的和其他柱状数据库。但除了MySQL和Postgres,还没有其他数据 库将JSON作为基石。
Postgres将很快发生变化。在9.2版本中, Postgres将支持JSON数据类型,这将“允许存储基于文档的数据库,可存储JSON文档,或将数组和行数据转换成JSON ”。尽管Postgres支持XML数据类型有一段时间了,这种变化令我对JSON的重要性日益增加,增加了一个微妙的确认。
还有一些数据库是基于XML的(如MarkLogic),但是还没有任何类似迅速采用基于JSON存储之类的动静。
3. 物联网
在这一领域的运动比我所提到的其他领域寻更难以辨别。物联网仍然是一个概念,但这是特别强大的一个。它还未实现,还未被证明可行,以及首选的数据格式。互联网基本上是一大堆电脑连接一直的小事。
但 值得一提的是,JSON开始已经在这一领域建立立足点。有人使用JSON在Arduino上建了一个库。在“物联网架构设计”(第102页)一书中,有人 认为:“JSON可以更好地适应[比XML]智能设备上的功能。此外,它可以被解析成JavaScript对象。这使得它成为集成到网页中的理想人选。 “你可以基于JSON构造LED压力表。你的下一个温控器可能也会基于JSON运行。
我们还没有到那个时侯,几乎感觉不到的JSON关联着你周围的一切。谁知道呢?
4. 全栈(全端)JavaScript
除了上面提到的三股力量,还有一个更值得地提到:JavaScript是一种辣味十足且有可能不会很快改变的技术。node.js已经逐渐成为主流,围绕它 周围的狂热社区在快速地产生,新的客户端JavaScript库每一天都在增加,JavaScript已经在网络上广泛使用,在web开发世界,参与这个 不断增长的分支的人们,应该更喜欢JSON,这仅仅是轻描淡写的一笔。 当然,也有基于node的XML解析器,但它主要是处理遗留的基于XML的服务。事实是,如果你正在从上往下做全栈式的JavaScript,使用JSON之外的东西是愚蠢的。因为全栈的JavaScript已经成为主流。
这样或那样,前途光明的JSON
如果上述与JSON本身无关,这将是很另人吃惊的。许多人认为,JSON更好,因为它不像XML那么“详细”,并且比起纯二进制更容易被人们理解。
这些因素都对JSON有一定的帮助,但我们的开发人员Matthew Lyon有一个更为令人信服的理由。他认为JSON的崛起,是因为JSON只处理了非常有限的数据类型。它本质上限制为null, Booleans, numerics, strings, arrays,和 dictionaries。它甚至没有一个日期数据类型。JSON就是这样,不仅没有一般XML的冗长:它仅是在使用本身的数据类型。它本身的原始数据类 型的更简洁,使JSON更深刻,并可以立即与之互操作。
总的来说,我的说法并不是真的如此大胆,因 为似乎已经显而易见了。它主要由两部分组成:(1)为了全球的数字基础设施,需要有无孔不入的数据交换格式,像针线一样将一切融合在一起,建立高清晰度的 节点;(2)有充分理由认为,JSON总有一天会在我们的数字世界中建立霸主地位。我们应该期望适应这一变化,并相应地调整。