JSON和XML的区别

 
JSON 和 XML 都是基于文本的可读格式,独立于编程语言,能够在几乎所有的编程语言中使用。本节我们就来介绍一下 JSON 和 XML 的区别。

在介绍 JSON 和 XML 的区别之前,我们先来分别介绍一下 JSON 和 XML。

什么是 XML?

XML 全称“Extensive Markup Language”,译为“可扩展标记语言”,是一种源自 SGML 的、基于文本的数据格式(XML 是 SGML 的一个子集)。

SGML 全称“Standard Generalized Markup language”,译为“标准通用标记语言”,简称“通用标言”,是一种定义电子文档结构和描述其内容的国际标准语言,是 1986 年国际标准化组织出版发布的一个信息管理方面的国际标准。

XML 是一种专门为了存储数据而创建的标记语言,它的编写方式与 HTML 非常相似,能够通过不同的标签来标记不同的内容,下面展示了一个简单 XML 数据:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <title>JSON教程</title>
    <author>C语言中文网</author>
    <url>http://c.biancheng.net/</url>
    <catalogue>
        <li>JSON是什么?</li>
        <li>JSONP是什么?</li>
        <li>JSON语法规则</li> 
    </catalogue>
</note>
XML 旨在传输或保存数据,而不是显示数据,在 XML 中,没有预定义标签,其中使用的所有标签都是自定义的,而且所有的标签都由两个部分组成,分别是开始标签(例如<tagname>)和结束标签(例如</tagname>)。需要注意的是,XML 中的标签是区分大小写的。

XML 的主要优点是它可以跨平台、跨语言进行传输。另外,XML 数据可以保存在格式为 .xml 的文本文件中。

什么是 JSON?

JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式。与 XML 相同,JavaScript 同样可以跨平台、跨语言传递数据。

JSON 数据的结构类似于一个 JavaScript 对象,如下例所示:
{
    "title":"JSON教程",
    "author":"C语言中文网",
    "url":"http://c.biancheng.net/",
    "catalogue":[
        "JSON是什么?",
        "JSONP是什么?",
        "JSON语法规则"
    ]
}
JSON 的优点在于其结构灵活,所有的浏览器都支持。而且 JSON 语法简单,大多数编程语言都支持 JSON(有些本身就支持,有些可以通过第三方库得到支持)。另外,JSON 数据可以存储在 .json 格式的文本文件中。

有关 JSON 的详细介绍,您可以查阅《JSON是什么?》一节。

JSON 与 XML 之间的差异

尽管 JSON 和 XML 的功能非常相似,但它们之间还是存在一些差异的,如下表所示:

JSON XML
JSON 是一种数据格式 XML 是一种标记语言
与 XML 相比,JSON 数据更容易阅读 XML 文档相对来说阅读起来比较困难
JSON 数据可以存储在 .json 格式的文本文件中 XML 数据可以存储在 .xml 格式的文本文件中
JSON 中支持字符串、数字、数组、布尔值等类型 XML 中只有字符串类型
JSON 没有显示功能 XML 提供了显示数据的能力,因为它是一种标记语言
JSON 仅支持 UTF-8 编码 XML 支持各种编码
JSON 不支持注释 XML 支持注释
JSON 不支持命名空间 XML 支持命名空间
JSON 读写速度更快,且更容易解析 相对于 JSON,XML 数据结构更加复杂,解析速度相对较慢
相对于 XML,JSON 的安全性较低 相对于 JSON,XML 的安全性更高

JSON 与 XML 之间的相似之处

除了有许多不同的地方外,JSON 与 XML 之间也有许多相似的地方,最主要的就是,它们的用途是相同的,即存储和传输数据。其次,它们都可以存储在文本文件中,程序员无需借助计算机就可以读写它们中的内容。

此外,在 HTTP 请求中,JSON 和 XML 都能够作为传输数据的类型,在服务器与客户端之间进行传递。