JSON为王,为什么XML会慢慢淡出人们的视野


发布者 ourjs  发布时间 1393605625000
关键字 大话编程 
Luc Perkins

目前全球信息基础设施的特点是,拥有大量的数据交换格式。这一点也不奇怪。互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实。但我仍然相信,在这一领域还有一股较强的历史趋势,推动JSON数据格式的应用。

十年前,XML是主要的数据交换格式。它的出现,尤如一股清新的空气,以及令人惊喜的SGML(标准通用标记语言),是一个巨大的进步。它使人们能够做到以前想都不敢想的事情,比如通过HTTP连接交换微软Office文档,你的周围布满XML文档,你很容易忽略这把“互联网瑞士军刀”的重要性。

这已经不是什么秘密了,但在过去的几年里,在数据交换的世界,一个大胆的改造已经开始。更轻巧,更省带宽的,密集型的JSON(JavaScript对象标记),已不仅仅成为XML的另外一套可选技术,而是可能成为一个潜在的完全成熟的接班人。现在各种各样的力量汇聚在一起,让XML的使用越来越少,并视JSON作为未来的全球数字架构的首选格式。我认为,唯一的问题是这个时刻何时到来。

我坚信,这种转变可以归因于四大趋势,我将依次讨论:

1. APIs

不管你喜欢与否,今天的网络环境在很多重要方面仍然严重孤立。有大量你将永远接触不到的信息在那里(如身份验证信息,应该被加密)。但像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总有一天会在我们的数字世界中建立霸主地位。我们应该期望适应这一变化,并相应地调整。 




回复 (10)
  • #
  • #1 忘了爱 1393828159000
    XML……
  • #2 限迷恋 1393831977000
    XML阅读起来很方便,JSON总感觉不太好看,有配套的小工具看么?
  • #3 淡然路过 1393835548000
    @限迷恋

    有json转换器,像字典一样,确实比xml更容易阅读,个人之见。
  • #4 Jonathan 1393840487000
    JSON不能表示一些比较复杂的数据结构吧?
  • #5 你妹夫 1393840953000
    长江后浪推前浪
  • #6 常可非 1393855652000
    只能说,各有强处。
  • #7 英雄的心 1393861943000
    postman试试!!!
  • #8 勤能补拙 1395069737000
    @限迷恋

    http://www.ij2ee.com/bejson/bejson.html 格式化json的 挺好用
  • #9 春江一条小鱼 1414982445332

    没什么区别。都是服务数据。只是看服务器和客户端的支持情况。XML,早出生,对其支持方式比较多,各家有各家的规范,开发都不能偷懒。JSON,晚出生,赶上标准化的好时机,大家按标准对其支持,方便开发者注重数据开发,不用考虑太多其它平台上的问题。

  • #10 卜小龙 1436343951128

    JSON确实很强大,但是我认为他仅仅只能存储那些不保证不会丢失的数据,对于关系型数据,我们当然不能全部存放在JSON里面 www.buxiaolong.com

微信扫码 立即评论