xml - json和xml有什么区别

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
关闭10年前.

JSON 和 XML 有什么区别?

最佳答案

似乎没有其他答案提到的根本区别在于,XML 是一种标记语言(正如其名称中所说的那样),而 JSON 是一种表示对象的方式(正如其名称中所指出的那样)。

标记语言是一种向自由流动的纯文本添加额外信息的方式,例如

Here is some text.

使用 XML(使用一定的元素词汇)你可以把:

<Document>
    <Paragraph Align="Center">
        Here <Bold>is</Bold> some text.
    </Paragraph>
</Document>

这就是标记语言在表示文档方面如此有用的原因。

像 JSON 这样的对象表示法没有那么灵活。但这通常是一件好事。当您表示对象时,您根本不需要额外的灵 active 。要以 JSON 表示上述示例,您实际上必须手动解决 XML 为您解决的一些问题。

{
    "Paragraphs": [
        {
            "align": "center",
            "content": [
                "Here ", {
                    "style" : "bold",
                    "content": [ "is" ]
                },
                " some text."
            ]
        }
    ]
}

它不如 XML 好,原因是我们正在尝试使用对象表示法进行标记。所以我们必须发明一种方法来将纯文本片段散布在对象周围,使用可以包含字符串和嵌套对象的“内容”数组。

另一方面,如果您有典型的对象层次结构,并且希望在流中表示它们,那么 JSON 比 HTML 更适合此任务。

{
    "firstName": "Homer",
    "lastName": "Simpson",
    "relatives": [ "Grandpa", "Marge", "The Boy", "Lisa", "I think that's all of them" ]
} 

这是逻辑上等价的 XML:

<Person>
    <FirstName>Homer</FirstName>
    <LastName>Simpsons</LastName>
    <Relatives>
        <Relative>Grandpa</Relative>
        <Relative>Marge</Relative>
        <Relative>The Boy</Relative>
        <Relative>Lisa</Relative>
        <Relative>I think that's all of them</Relative>
    </Relatives>
</Person>

JSON 看起来更像是我们在编程语言中声明的数据结构。此外,它的名称重复较少。

但最重要的是,它有一种明确的方式来区分“记录”(无序的项目,按名称标识)和“列表”(有序的项目,按位置标识)。如果没有这种区别,对象符号实际上是无用的。而 XML 没有这样的区别!在我的 XML 示例中 <Person>是记录和<Relatives>是一个列表,但它们没有被语法识别出来。

相反,XML 具有“元素”与“属性”。这看起来像是同一种区别,但事实并非如此,因为属性只能有字符串值。它们不能是嵌套对象。所以我不能把这个想法应用到 <Person> , 因为我不应该转 <Relatives>成一个字符串。

通过使用外部架构或额外的用户定义属性,您可以正式区分 XML 中的列表和记录。 JSON 的优点是低级语法内置了这种区别,因此非常简洁和通用。这意味着默认情况下 JSON 更“ self 描述”,这是两种格式的重要目标。

所以 JSON 应该是对象表示法的首选,其中 XML 的最佳点是文档标记。

不幸的是,对于 XML,我们已经将 HTML 作为世界排名第一的富文本标记语言。曾尝试用 XML 重新格式化 HTML,但这并没有太大的优势。

因此,XML 应该(在我看来)是一种非常有限的利基技术,如果您出于某种原因不想使用 HTML,则最适合发明自己的富文本标记语言。问题是在 1998 年仍然有很多关于 Web 的炒作,而 XML 由于其表面上与 HTML 的相似性而变得流行。尝试将实际上为方便标记而设计的语法应用于分层数据是一个奇怪的设计选择。

https://stackoverflow.com/questions/2620270/

相关文章:

json - 任何用于在 Classic ASP 中解析 JSON 的好库?

json - 从 JQuery.ajax 成功数据中解析 JSON

c# - JavaScriptSerializer.Deserialize - 如何更改字段名称

javascript - 在没有 jQuery 的情况下在 node.js 上合并或合并 JSON

javascript - 如何将 JSON 转换为 CSV 格式并存储在变量中

python - 如何以不同的顺序比较具有相同元素的两个 JSON 对象相等?

ios - 在 Swift 中将 JSON 字符串转换为 Object 的简单而干净的方法

javascript - 如何通过 Ajax 请求将 Select2 与 JSON 一起使用?

json - REST API 最佳实践 : args in query string vs in

java - 在 Spring 中配置 ObjectMapper