打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
为什么使用JSON
JSON的结构更容易映射至一般语言的数据结构。

XML和JSON的主要组成成分:
  • XML是element、attribute和element content。
  • JSON是object、array、string、number、boolean(true/false)和null。
XML要表示一个object (指name-value pair的集合),最初可能会使用element作为object,每个key-value pair 用 attribute 表示:
<student name="John" age="10"/>

但如个某个 value 也是 object,那么就不可以当作attribute:
<student name="John" age="10">    <address>        <country>China</country>        <province>Guang Dong</province>        <city>...</city>        <district>...</district>        ...    </address></student>
那么,什么时候用element,什么时候用attribute,就已经是一个问题了。[1] 提到一些优缺点。

而JSON因为有object这种类型,可以自然地映射,不需考虑上述的问题,自然地得到以下的格式。
{    "name": "John",    "age" : 10,    "address" : {        "country" : "China",        "province" : "Guang Dong",        "city" : "..",        "district" : "..",        ...    }}

除此以外,
  • XML需要选择怎么处理element content的换行,而JSON string则不须作这个选择。
  • XML只有文字,没有预设的数字格式,而JSON则有明确的number格式,这样在locale上也安全。
  • XML映射数组没大问题,就是数组元素tag比较重复冗余。JSON 比较易读。
  • JSON的true/false/null也能容易统一至一般编程语言的对应语义。

目前全球信息基础设施的特点是,拥有大量的数据交换格式。这一点也不奇怪。互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实。但我仍然相信,在这一领域还有一股较强的历史趋势,推动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总有一天会在我们的数字世界中建立霸主地位。我们应该期望适应这一变化,并相应地调整。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
什么是Ajax和JSON,它们的优缺点
json和xml比较与区别
Ajax学习(5)
抛弃了XML,你以为你就会用JSON吗?这几大要点教给你!
科普 | 什么是数据交换语言?
json在线格式美化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服