JSON会将XML替换为数据格式吗?

时间:2009-03-26 04:21:56

标签: xml json

当我第一次看到XML时,我认为它基本上是树的表示。然后我想:重要的不是它是树木的特别表示,而是每个人都同意的。就像ASCII一样。一旦建立,由于网络效应,很难取代。取代它的新方案必须要好得多(可能好10倍)。当然,为了国际化,ASCII(大部分)已被(大部分)取代为Unicode。

根据google trends,XML有x43领先,但正在下降 - 而JSON增长。

[已编辑] JSON会将XML替换为数据格式吗?

  1. 执行哪些任务?
  2. 为哪些程序员/行业?

  3. 注意: S表达式(来自lisp)是树的另一种表示,但尚未获得主流采用。还有许多其他提议,例如YAML和协议缓冲区(用于二进制格式)。

    我可以看到JSON主宰着与客户端AJAX(AJAJ?)通信的空间,这可能会传递回传播到其他系统。

    基于SGML的XML比作为文档格式的JSON更好。我对XML作为数据格式感兴趣。

    XML有一个JSON缺乏的既定生态系统,特别是定义格式(XML Schema)和转换它们(XSLT)的方法。 XML还有许多其他标准,尤其是Web服务 - 但它们的重量和复杂性可以说是与XML相悖,并且让人们想要一个全新的开始(类似于“Web服务”,这是从CORBA开始的新起点)。

    [ 2010年3月编辑]与NoSQL一样,JSON是无模式的

4 个答案:

答案 0 :(得分:14)

简短回答:是和否(根据以下评论编辑)

存在根本的差异和权衡。 XML是一种标记语言,特别适用于文本文档(xhtml,docbook,各种office文档)。 对于许多其他任务而言足够好。问题主要出现在它有层次模型(而不是像SQL中的关系,或者像oo语言中的对象图)。

JSON是一种对象符号,这意味着它更适合处理面向数据的用例; xml类型工作的情况,但是在克服对象和层次模型之间的阻抗方面需要更多成本。 JSON不是一个完美的选择 - 它仍然是数据,而不是对象(没有身份,不能完整的图形) - 但它比XML更自然。 因此,构建工具以进行良好的体面和简单的数据绑定更容易。

所以:两者都有足够的空间,我希望两者都可以长期使用。 并不总是以最佳方式,但两者都可以充分利用大量用例。

值得一提的是,自从写完我的原始答案以来,我已经看到JSON绝对为我所工作过的公司的数据导向/数据交换用例歼灭了XML。 SOAP(etc)将开始显着缩小,“普通的旧JSON”数据交换(例如,使用RESTish框架,例如Java的JAX-RS)将接管。

然而,XML对于文本标记来说要好得多。

答案 1 :(得分:8)

答案 2 :(得分:7)

我认为JSON已经在很大程度上取代了XML,用于与Web服务器进行客户端通信,但这可能是它的主导地位。正如您所说,XML提供了适合服务器到服务器交互的优势。

答案 3 :(得分:3)

替换XML?哪个XML?

“XML - 数据结构的种类”“XML - 此结构的文本表示”

因此,虽然XML的文本表示可以用许多方法代替 (JSON,YAML,...),它不会取代结构属性 (有一棵树,带有属性,子元素和文本节点的元素)。

存在和/或处理XML结构化数据的格式 忽略了文本形式。例子:

  1. DOM - 以转换效率的形式将对象树存储在内存中。
  2. EXI - 以二进制优化形式存储/传输XML数据的未来格式。
  3. 因此,XML的文本表示可以通过转换“替换” 将标准XML表示法转换为其他内容并再次返回。 (XML到JSON,回到XML)

    但是,结构属性和基于它们的所有技术, 不能被“替换”,因为这只会打破所有标准。 所以没有人这样做。只有替代的文字表示 被读取到内存中的DOM或其​​他格式,实现更高的抽象级别 因而忽略了基本的文本形式。