什么是 JSON?它比 XML 更好吗?

什么是 JSON?它比 XML 更好吗?

Wambui Mugo
Wambui Mugo

最后更新于

正如 JSON 开发者之一 Douglas Crockford 所说:“JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式。它便于人们读写,也便于机器解析和生成。”

虽然 JSON 起源于 JavaScript,但主流编程语言都原生支持它,或通过库提供支持。JSON 在网络上越来越受欢迎。目前,几乎所有公共 Web 服务和部分私有 Web 服务都在使用它。它最常用于 Web 服务器与客户端之间的信息交换。由于 JSON 广受欢迎,MySQL、PostgreSQL、MongoDB 和 Neo4j 等许多数据库都支持它。

接下来,我们一起深入了解 JSON 的结构、使用理由、相较于 XML 的优势、局限性以及适用场景。

JSON 文件结构

不必涉及太多技术术语,JSON 数据存储在类似映射的纯文本文件中,保持了代码的可读性,也便于打开和查看。任何编程语言都能处理和读取纯文本,因此 JSON 具有良好的互操作性。由于采用文本格式,它更轻量,在网络上传输数据也更方便、更快捷。对于需要展示和发送大量数据的 Web 服务,JSON 是理想之选。

JSON 的主要替代方案是 XML。XML 使用标签结构,因此稍微复杂一些。它主要用于数据交换,因为每种编程语言都有 XML 解析器。许多模式都能验证 XML,因此它非常适合电子商务,例如网上商店、银行、工业系统集成等。

不过,需要注意的是,XML 不是编程语言,而是标记语言,因此数据以树形结构存储。这会导致数据体积较大,传输速度较慢。

如果您想将 XML 转换为 JavaScript 对象,就需要处理数百行代码,还不包括自定义调整。相比之下,将 JSON 转换为 JavaScript 对象只需一行代码。

好消息是,您可以使用 Filestar 轻松将 XML 转换为 JSON,让工作更简单。同样,您也可以轻松将 JSON 转换为 XML。

为什么使用 JSON

· JavaScript 引擎让 JSON 的解析速度更快,加上它体积小,有助于加快数据传输。

· 此外,JSON 不使用冗余或空的数据标签,因此保持了简洁、易读和紧凑的特点。不过,它支持数组、布尔值、数字、null、字符串和基本对象。

· JSON 同时支持 ASCII 和 UTF 编码。

· 除了使用 JSONP 的情况外,JSON 始终能提供更安全的解析,而 XML 则容易受到攻击。

· 将 JSON 与 AJAX 结合使用,可以大幅提升数据处理速度。

JSON 的局限性

虽然 JSON 能灵活处理数据,并适用于众多编程语言,但我们也不能忽视它的一些缺点。

1. 它缺少模式,这既是优点也是缺点。一方面,您可以自由地以任何形式表示数据;另一方面,也很容易不小心创建出格式不规范的数据。

2. 它只允许一种数据类型,即 IEEE-754 双精度类型。我知道这个术语有些复杂,简单来说,您无法使用许多编程语言中提供的细分且多样的数字类型。

3. 此外,您无法为需要额外说明的字段添加注释,这容易造成误解。

4. 没错,JSON 比 XML 更简洁,但对于海量数据或特殊的数据交换用途,使用更高效的数据格式会更好。

最适合的使用场景:

当您编写需要与移动应用或浏览器通信的程序时,请使用 JSON。XML 会是一个过时的选择,因为它是前端的危险信号,也无法很好地配合您希望招募的移动端开发人才。

对于服务器之间的通信,JSON 可能会派上用场,但 Apache Thrift 和 Avro 等序列化框架表现更好。

虽然所有数据库都支持它,但对于关系型数据库,通常的建议是尽量避免使用。这是因为关系型数据库使用结构化数据,在查询 JSON 对象内部的数据时,您可能会遇到性能问题。

总结

简而言之,JSON 是浏览器、Web 服务器和移动应用之间传输数据的事实标准格式。它灵活而简单,便于阅读、理解和操作。使用 JSON,您不必为验证和语义问题而烦恼。