【问题标题】:Are JSON and XML Comparable? [closed]JSON 和 XML 可比吗? [关闭]
【发布时间】:2011-10-19 15:22:43
【问题描述】:

我听说有人说“JSON 与 XML 相同”。 JSON 和 XML 是否具有可比性?各自的主要异同点是什么?

有一些 StackOverflow Q&A 涉及比较 JSON 和 XML [1] [2] [3] [4] [5] [6] [7],但没有一个提供专注于它们的主要相同点和不同点。

【问题讨论】:

    标签: xml json data-structures comparison


    【解决方案1】:

    什么是 JSON?

    JSON(JavaScript 对象表示法)is a lightweight text-based open standard designed for human-readable data interchangeJSON is a text format that is completely language independent but uses conventions that are familiar to programmers.

    借用JSON sample from Wikipedia,一个人的 JSON 表示可能如下所示:

    {
        "firstName" : "John",
        "lastName"  : "Smith",
        "address"   :
        {
            "street": "21 2nd Street",
            "city"  : "New York",
            "state" : "NY",
            "zip"   : "10021"
        },
        "phoneNumber":
        [
            {
                "type"  : "home",
                "number": "212 555-1234"
            },
            {
                "type"  : "fax",
                "number": "646 555-4567"
            }
        ]
    }
    

    什么是 XML?

    XML(可扩展标记语言)is a simple, very flexible text format derived from SGML。根据Wikipedia,XML是a set of rules for encoding documents in machine-readable form. [... It's goals] emphasize simplicity, generality, and usability over the Internet. It is a textual data format[...].

    再次借用XML sample from Wikipedia,一个人的 XML 表示可能如下所示:

    <person firstName="John" lastName="Smith">
        <address street="21 2nd Street" city="New York" state="NY" zip="10021" />
        <phoneNumber type="home" number="212 555-1234" />
        <phoneNumber type="fax"  number="646 555-4567" />
    </person>
    

    比较

    根据这些简单的定义,可以得出结论认为 JSON 和 XML 具有可比性是可以理解的。如果您的目标是使用其中一种或另一种在 Internet 上进行简单的数据交换,如上面的简单示例所示,那么该目标肯定是可以实现的,而且 JSON 和 XML 实际上在很大程度上具有可比性。

    但是,随着您对每个规范的深入研究,您开始意识到它们是完全不同的标准,具有相似的目标;每个都有重叠的用例,其中一个比另一个更适合,并且它们是等效的解决方案(选择取决于特定用例)。

    虽然可能有点偏颇,The Fat-Free Alternative to XMLfrom the JSON site 列出了一些比较好的点。还有 XML vs JSON !!! Dont compare.JSON Pros and Cons 博客条目,其中包含一些要点供比较。

    相似之处

    • 可用于文本数据交换;没有不易被人类阅读的晦涩格式。
    • 允许以结构化方式表示数据,提供一定程度的数据关系。
    • 使用 Unicode 进行国际化。
    • 与编程语言无关;可用于多种编程语言。
    • 可用于连接异构系统;只要所有系统都使用约定的数据表示合约,异构系统之间的通信就成为可能。
    • 开放标准;获取规范不需要成为任何管理机构的成员(JSON 在IETF RFC #4627 中定义,XML 被定义为W3C specification)并且没有限制性许可(JSONXML)。

    区别

    • JSON 有一个简单的表示法,可以很快被开发人员采用。
    • JSON 的轻量级特性使其能够通过减少性能瓶颈来改善互联网用户体验。
    • 从 JavaScript 借用的 JSON 的简单表示法使得将数据表示反序列化/序列化为common data structures 变得更容易、更高效。
    • JSON 在ECMAScript, 5th edition 中可用,使其可用于具有集成 ECMAScript 引擎的所有应用程序(尤其是 Web 浏览器)。
    • XML 是一个文档markup language,提供的语义赋予数据额外的意义; JSON 没有这种能力。
    • XML 有更广泛的规范,涵盖诸如用于数据定义和验证的schemasnamespacesstylesheetstransformationsdata expressions 和许多其他规范。
    • XML 存在的时间更长,并被许多企业广泛采用;为其提供更多的文档、编程语言支持、工具支持、社区体验、现成产品支持等。
    • XML 的稳健标准使其成为灵活(有时是僵化...以一种有益的方式)企业对企业通信的更好解决方案。

    【讨论】:

    • 出色的答案! 清晰完整,带有适当的参考资料以供备份和进一步阅读。好样的!
    【解决方案2】:

    这是一组可用于从 XML 转换为 JSON 的类比关系:

    • 根节点由顶层对象表示
    • 子节点加属性的集合由一个数组表示
    • 每个子节点都由一个带有 Object 值的字符串名称表示
    • 每个属性都由带有字符串值的字符串名称表示
    • 可能出现多次的元素将转换为数组属性
    • 标签的文本值由带有字符串值的前缀字符串名称表示
    • 评论节点与最近的字符串值加上\u0022分隔符合并

    这是一组可用于从 JSON 转换为 XML 的类比关系:

    • 顶级Object由根节点表示
    • 数组由子节点轴中的子节点集表示
    • 具有 Object 值的字符串名称由元素实体表示
    • 带有字符串值的字符串名称由属性实体表示
    • 带前缀的字符串名称被转换为父元素的文本节点

    参考文献

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 2011-03-15
      • 2014-03-16
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多