什么时候更喜欢 JSON 而不是 XML?

IT技术 javascript jquery xml json
2021-02-22 22:16:45

我的要求只是在价差上显示从数据库中检索到的一组值。我正在使用 jquery。

6个回答

当以下任一情况为真时,优先使用 XML 而不是 JSON:

  • 您需要消息验证
  • 您正在使用 XSLT
  • 您的消息包含大量标记文本
  • 您需要与不支持 JSON 的环境进行互操作

当所有这些都成立时,优先使用 JSON 而不是 XML:

  • 消息不需要验证,或者验证它们的反序列化很简单
  • 您没有转换消息,或者转换它们的反序列化很简单
  • 您的消息主要是数据,而不是标记文本
  • 消息传递端点有很好的 JSON 工具
@sotn 您没有像 XML(例如 XQuery)那样对 JSON 进行 PL/SQL。它是某些 NoSQL DB(eXist、MarkLogic Server、EMC Documentum xDB、BaseX、Zorba)的基础
2021-04-17 22:16:45
您什么时候会使用 XSLT 而不会使用 XML?如果您已经在使用 XSLT,则可以使用 XML。这不应该支持使用 XML 的论点。如果您使用 JSON.parse(),这就像说使用 JSON。此外,我认为转换 JSON 对象比编写 XSLT 转换更容易,但这可能是我个人的偏见。
2021-04-19 22:16:45
与 XML 相比,JSON 在处理标记文本方面没有任何优势。但我明白你的意思;这可能被夸大了。
2021-04-24 22:16:45
当所有条件都相等时,有两个原因支持 JSON:JSON 比 XML 解析要轻得多(CPU 友好)并且需要传输的数据少得多(网络友好)。
2021-05-08 22:16:45
我不完全同意 JSON 中的验证部分。JSON 也是可验证的。检查这个 IETF 草案:链接 这是一个草案,但仍然..
2021-05-15 22:16:45

除非我需要使用 XML,否则我使用 JSON。它更容易理解,并且(因为它需要更少的配置开销)如果库在您的上下文中可用,那么它更容易进行读写编程,并且它们现在非常普遍。

当亚马逊第一次将他们的目录作为网络服务公开时,他们同时提供了 JSON 和 XML。大约 90% 的实施者选择了 JSON。

几个可能的原因,包括我不想重写的现有软件。但最重要的是使用 XML 作为数据交换格式,我不控制两端,或者有一个适用并需要 XML 的正式标准。当我是唯一参与的开发人员时,我只能任意选择。
2021-04-16 22:16:45
所以更深层次的问题是“出于什么原因需要您使用 XML?” 这些理由是愚蠢的吗?或者它们只是从与您不同的角度反映了不同的关注点?
2021-04-24 22:16:45
“除非我需要使用 XML,否则我使用 JSON。” ~正是。
2021-05-02 22:16:45

考虑到您已经在客户端执行 javascript 的特定情况,出于以下原因,我会使用 JSON:

  • 由于 JSON 是 javascript 原生的,因此您必须在客户端编写更少的代码 - 只需eval()(或者更好的是JSON.parse())JSON 字符串并获取您可以使用的对象。

  • 同时,在客户端评估 JSON 会更高效,因此速度更快。

  • JSON 序列化产生比 XML 更短的字符串。使用 JSON 将减少通过线路运行的数据量并提高这方面的性能。

这里有一些进一步的阅读:http : //www.subbu.org/blog/2006/08/json-vs-xml

比 eval() 更喜欢 JSON.parse()。
2021-04-19 22:16:45
摘自 json.org:eval 函数非常快。但是,它可以编译和执行任何 JavaScript 程序,因此可能存在安全问题。当来源可信且有能力时,表明使用 eval。使用 JSON 解析器更安全
2021-04-21 22:16:45
@Shy,JSON 自己的网站说你可以在 JSON 上使用 eval(用括号括起来):json.org/js.html
2021-04-23 22:16:45
eval()JSON是不是一个很大的禁忌?
2021-05-04 22:16:45

我在 XML vs JSON relm 中遇到的其他一些事情:

JSON 非常适合

  • 名称/值对
  • 嵌套这些对

这意味着它倾向于喜欢数组或嵌套数组。但是 JSON 缺少两者

  • 属性
  • 命名空间

因此,如果您要组合两个或多个 JSON 服务,则可能存在潜在的命名空间冲突。也就是说,根据我的经验,在交换数据时,大约 90% 的事情都可以使用 JSON。

我认为没有属性的 JSON 是一个特性。
2021-04-27 22:16:45
Json 的另一个问题是您无法轻松合并两个 json 消息以创建新的 json 消息。它通常不会格式正确..
2021-04-30 22:16:45
你需要属性做什么?如果您的元素包含其他值,请将其设为对象 - 成员是您的“属性”。坦率地说,我认为 XML 的分叉属性/容器结构完全有害。
2021-05-04 22:16:45

通常 JSON 更紧凑,解析速度更快。

在以下情况下首选 XML:

  • 您需要在客户端处理数据,您可以利用 XSL 来实现这一点。很有可能 XML + XSL 链比 JSON + JavaScript 工作得更快,尤其是对于大块数据。
    • 一个很好的例子是将数据转换为 HTML 片段。
  • 各种遗留案例:
    • 有一个现有的 XML 服务,由于某些原因,用 JSON 重写它很麻烦。
    • 在使用用户输入进行一些轻微处理后,您必须将此数据作为 XML 回传。

(几乎)XML 的一个重要案例:尝试检测何时发送 HTML 片段比发送原始数据更有益。AHAH可以在简单的应用程序中创造奇迹,但经常被忽视。通常这种风格假设服务器发送 HTML 片段,这些片段将被内联在网页中而不进行处理。

通常在 AHAH 案例中,CSS 被最大限度地利用来可视化地处理片段并实现简单的条件,例如使用特定于用户或特定于应用程序的设置隐藏/显示片段的相关部分。