辩论:JSON与XML作为数据交换格式

JSON与XML数据交换格式的辩论

在2006年的XML会议上,JSON的发明者、雅虎架构师Douglas Crockford发表了题为《JSON,XML的无脂替代品》的演讲,引发了关于JSON与XML作为数据交换格式的辩论。JSON是一种设计目标为文本化、最小化且为JavaScript子集的数据交换格式,支持对象(无序的键值对集合)和数组(有序的值序列)两种结构,以及字符串、数字、布尔值和null四种简单类型。

JSON的优势

Douglas Crockford提出了JSON作为数据交换格式的多个优势:

  1. 人类和机器可读:JSON格式同时适合人类阅读和机器解析。
  2. Unicode支持:允许传输几乎任何人类语言的信息。
  3. 自描述性:JSON格式描述了结构和字段名称以及具体值。
  4. 严格的语法和解析要求:使得解析算法简单、高效且一致。
  5. 通用数据结构表示:能够表示记录、列表和树等最通用的计算机科学数据结构。

对JSON常见批评的回应

Douglas还反驳了针对JSON的常见批评:

  1. JSON没有命名空间:每个对象都是独立的命名空间,键集独立于其他对象,使用上下文避免歧义。
  2. JSON没有验证器:每个应用程序应负责验证其输入,无法委托给其他工具,但可以使用YAML验证器。
  3. JSON不可扩展:JSON本身是灵活的,可以表示任何非递归数据结构,且无需扩展即可添加新字段。
  4. JSON不是XML:JSON比XML简单得多。

其他观点

微软XML标准项目经理Mike Champion总结了Douglas演讲的要点:

  1. JSON与XML的不同:JSON没有版本号,采用“宽进严出”的哲学,支持超集如YAML。
  2. JSONRequest API:JSON社区推动基础设施供应商支持JSONRequest API,以解决AJAX环境中XmlHttpRequest的局限性。

Mike认为JSON适合浏览器与服务器通信,但在互操作性方面不如XML。他质疑JSON是否会替代XML在SOAP消息、RSS订阅等场景中的应用,并指出JSON的局限性在新技术场景中会显现。

辩论的进一步讨论

Dave Winer认为JSON解决了XML-RPC在1998年已经解决的问题,并指出JSON示例的复杂性。Douglas Crockford回应称“重新发明轮子的好处是可以得到一个更圆的轮子”。

Mike Champion总结了讨论中的关键点:

  1. JSON粉丝多于XML粉丝:讨论中支持JSON的人更多。
  2. 解析速度:JSON在当今浏览器中可能比XML快100倍。
  3. 类型化对象:JSON解析结果类似于类型化的“业务对象”,而XML需要额外的模式和数据绑定工具。
  4. JSON的优雅:JSON简单干净,不涉及XML的复杂性如元数据、注释、处理指令、模式语言和命名空间。

Mike认为XML虽然不如JSON优雅,但更稳健和灵活。JSON的局限性在新场景中会显现,历史上有更优雅的技术输给更广泛采用的重型技术。

其他专家观点

Simon Wilson认为JSON的甜点在于序列化简单数据结构以在编程语言之间传输。如果需要更复杂的数据结构,应使用XML。

XML共同发明者Tim Bray指出,JSON用于“在网络上传输结构体”,而XML适用于处理大量数据、加载到不同的内存数据结构、全文索引、人类可读等场景。

Uche Ogbuji认为XML和JSON各有其使用场景,XML更适合文档和文本,而JSON更适合记录和数据。

其他讨论

Sam Ruby和Robert Sayre分别从网络传输字节和嵌入XML/HTML内容的角度分析了JSON的优势。Uche Ogbuji认为XML在数据和文档方面的努力使其比前身更有用,但JSON在数据方面更为适合。

最后,Douglas Crockford还发明了一种新的键盘布局,增添了讨论的趣味性。

阅读 24
0 条评论