网站

JSON数据交换格式获得标准祝福

Anonim

一个即将到来的轻量级数据根据Istvan Sebestyen的说法,Ecma大会已批准ECMAScript的第五版,它已被越来越多的人认为是XML的替代品,该组织秘书长。包含在这个新版本的ECMAScript中,其中流行的JavaScript是一种方言,是使用JavaScript Object Notation(JSON)的本地支持。

这个包含“肯定会对开发人员产生重大影响”,Douglas Crockford说道,雅虎软件架构师被引用为JSON的创建者

“JSON已经在Web应用中得到了相当广泛的应用,通过在ECMAScript语言中内置JSON,[JSON]实现将变得更快更安全。”Crockford说。至少在需要传递相对简单的结构化数据的情况下,Web应用程序开发社区正在逐渐远离使用XML作为在不同系统间交换数据的唯一期望标准。

新的标准,正式命名为ECMA-262,包含一个用于创建和解析JSON文本的对象。大部分情况下,它遵循由Crockford撰写的2006年互联网工程任务组RFC RFC 4627。新的ECMAScript标准试图纠正一些围绕JSON的安全问题。

在过去几年中,越来越多的Web应用程序开发人员使用JSON而不是基于XML的方法(如简单对象访问协议)来标记数据,因此可以在两台计算机之间传输。这在Web应用程序开发社区中创建了两个有时候相互对立的阵营。“JSON和XML倡导者之间的分歧很强,并且在可预见的将来会持续下去,”丹尼尔马克汉姆是Ajax架构师和弗吉尼亚州的主要合作伙伴。为基础的咨询公司贝德福德科技集团

倡导者称赞JSON的简单性。根据RFC,JSON是专门为处理“结构化数据的序列化”而开发的。 JSON是一组约定或语法,关于如何对要传输的数据进行排序,以便接收者可以解析它。它借用JavaScript的格式化对象和数组的规则。相比之下,XML依赖于基于模式的标记标签,这些标签往往会使数据集比通常用JSON呈现的数据集更大更复杂。

“我是JSON over XML的主要粉丝,主要是因为XML有很多如果你的JavaScript对象与你的服务器实体紧密配合,那么你就不需要额外的认知负担,“Markham说。 Markham还指出,XML具有JSON无法比拟的灵活性。 “XML仍然是互联网的瑞士军刀:能够处理来自任何连接器的各种数据,”他说。“在2001年,Crockford在使用Ajax集Web开发工具处理大量Web应用程序时制定了JSON其中包括JavaScript,XML和HTML。他发现XML对于他的需求来说太笨重。 “XML只是不可思议的丑陋和低效率,所以我们想出了使用JavaScript自己的数据表示来表示数据,”Crockford说。克罗克福德被广泛认为是JSON的发明者,尽管他对于这种上诉是谦虚的。 “它已经存在于自然界,我刚刚发现它,”他说。“自从2001年创建以来,JSON越来越受欢迎。 JSON.org网站列出了用于诸如Perl,Active Server Pages,PHP,C,Java,Python等语言的多个JSON转换器。雅虎支持其Web服务的JSON。最新版本的Internet Explorer和Firefox都支持JSON。 JSON“看起来像是ECMAScript 5的第一个普及版本,”Crockford说,“

JSON本身一直是ECMAScript的一部分,至少在Crockford使用ECMAScript语法作为JSON的基础上。 Crockford指出,与ECMAScript 5的不同之处在于ECMAScript对JSON具有“内置库支持”。这将有助于安全。

大多数开发人员使用JavaScript eval()函数将基于JSON的文本解析为可用的数据结构。安全专业人员将这种方法视为安全漏洞,因为这种输入形式可能允许第三方插入恶意代码。 Crockford说,新的分析器消除了使用eval()函数的必要性.Tem Bray是XML格式的共同创建者,也是Sun Microsystems Web技术总监,他指出他与之合作过的XML从业者看到JSON的值。 “XML具有一系列功能,可以交换文档(博客文章,新闻稿,医疗记录),而这些功能对于交换纯数据可能是多余的,”他通过电子邮件指出。 “JSON对于交换这种东西非常适用,并且像XML一样,与供应商无关。”
Bray怀疑ECMA的祝福将对JSON的进一步采用产生很大影响,因为它已经被广泛使用,不会遇到标准通常解决的互操作性问题。 “很显然,ECMAScript [修订]没有损害识别JSON的实际情况[但是] JSON已经深深地植入Web IT文化中。”

ECMAScript是JavaScript编程语言的供应商中立版本,原本是由Netscape作为Web浏览器的脚本语言创建。