JSON简介

0 股票
0
0
0
0

介绍

JSON,全称为 JavaScript Object Notation(JavaScript 对象表示法),是一种数据共享格式。顾名思义,JSON 源自 JavaScript 编程语言,但也适用于包括 Python、Ruby、PHP 和 Java 在内的多种语言。JSON 的发音通常与“Jason”(杰森)相似。.

JSON 格式不仅可读性强、轻量级,而且是 XML 的理想替代方案,所需的格式化工作也少得多。本指南将介绍 JSON 文件中可以使用的数据类型,以及该格式的一般结构和语法。.

理解语法和结构

JSON 单独存在时使用 .json 扩展名;当定义在其他文件格式(例如 .html)中时,它可以是带引号的 JSON 字符串,也可以是赋值给变量的对象。这种格式在 Web 服务器和客户端或浏览器之间传输。.

JSON 对象是一种键值对数据格式,通常用花括号括起来。使用 JSON 时,您很可能会在 .json 文件中遇到 JSON 对象,但它们也可以作为 JSON 对象或字符串存在于程序上下文中。.

以下是一个 JSON 对象示例:

{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987 
}

虽然这只是一个简短的示例,而 JSON 数据可以包含很多行,但它展示了 JSON 格式通常由两个圆括号(或花括号){} 组成,圆括号两侧是键值对。键值对填充圆括号之间的空白区域。JSON 中使用的大部分数据都封装在一个 JSON 对象中。.

键值对之间用冒号分隔,例如“key”:“value”。每个键值对之间用逗号分隔,因此JSON中间部分的结构如下:“key”:“value”,“key”:“value”,“key”:“value”。在前面的例子中,第一个键值对是“first_name”:“Sammy”。.

JSON 键位于冒号左侧。它们必须用双引号括起来,例如“key”,并且可以是任何有效的字符串。在每个对象中,键必须是唯一的。这些键字符串可以包含空格,例如«first_name»,但这会使编程时访问它们变得困难,因此最好使用下划线,例如«first_name»。.

JSON 值位于冒号右侧。更具体地说,这些值必须是以下六种数据类型之一:

  • 字符串
  • 数字
  • 对象
  • 数组
  • 布尔值(真或假)
  • 无效的

从更广泛的层面上看,值也可以由复杂的 JSON 对象或数组数据类型构成,这将在下一节中讨论。.

传递给 JSON 的每种数据类型都有自己的语法,这意味着字符串要用引号括起来,但数字则不用。.

对于 .json 文件,通常会得到一个跨越多行的模板,但 JSON 也可以全部写在一行上,如下例所示:

{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }

这种情况在其他文件类型或遇到 JSON 字符串时更为常见。.

将 JSON 数据分多行写入通常能显著提高可读性,尤其是在处理大型数据集时。由于 JSON 会忽略元素之间的空格,因此您可以使用冒号分隔键值对,使数据更易于阅读:

{ 
"first_name" : "Sammy", 
"last_name" : "Shark", 
"online" : true 
}

需要注意的是,尽管 JSON 对象看起来相似,但它们的格式并不相同。因此,虽然你可以在 JavaScript 对象中使用函数,但不能将它们作为 JSON 对象的值。JSON 最重要的特性在于它可以轻松地在不同的编程语言之间转换,所有参与的语言都能使用同一种格式。相比之下,JavaScript 对象只能通过 JavaScript 编程语言直接操作。.

JSON 可以通过嵌套对象和数组构成的层级结构变得更加复杂。下一步您将学习更多关于这些复杂结构的信息。.

在 JSON 中处理复杂类型

除了嵌套数组,JSON 还可以存储嵌套对象。这些对象和数组作为值传递给键,也可以包含键值对。.

嵌套对象

在以下 users.json 文件中,对于四个用户(“sammy”、“jesse”、“drew”、“jamie”),每个用户的值都是一个嵌套的 JSON 对象,该对象包含各自嵌套的“username”和“location”键,分别对应于每个用户。以下代码块中的每个用户条目都是一个嵌套 JSON 对象的示例:

{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}

在这个例子中,花括号用于创建一个嵌套的 JSON 对象,其中包含四个用户的用户名和各自的位置数据。与其他任何值一样,在使用对象时,使用逗号分隔各个元素。.

嵌套数组

您还可以使用 JavaScript 数组在 JSON 中嵌套数据,数组作为值传递。JavaScript 使用方括号 [ ] 来表示数组类型。数组是有序集合,可以包含不同数据类型的值。.

例如,当处理大量可以分组在一起的数据时,可以使用数组,例如当一个用户拥有不同的网站和社交媒体个人资料时。.

对于第一个嵌套数组,“Sammy”的用户个人资料可能如下所示:

{ 
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}

“websites”和“social_media”键分别使用数组来存储Sammy的两个网站链接和三个社交媒体个人资料链接的信息。你可以通过方括号的使用来判断它们是数组。.

在 JSON 格式中使用嵌套可以让你处理更复杂、更具层次性的数据。.

JSON 与 XML 的比较

XML,即可扩展标记语言,是一种存储易于访问且人机可读数据的格式。XML格式可用于多种编程语言。.

XML 在很多方面与 JSON 类似,但它需要更多的文本,读写起来也更耗时。XML 需要使用 XML 解析器进行解析,而 JSON 可以使用标准函数进行解析。此外,与 JSON 不同,XML 不能使用数组。.

以下是 XML 格式的示例:

<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>

现在,比较一下以 JSON 格式呈现的相同数据:

{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }

JSON 结构更紧凑,不需要像 XML 那样使用闭合标签。此外,XML 不像这个 JSON 示例那样使用数组(你可以从括号的使用看出这一点)。.

如果您熟悉 HTML,就会发现 XML 在标签的使用上与之非常相似。虽然 JSON 比 XML 更简洁、更详细,并且在许多情况下(包括 AJAX 应用程序)使用速度更快,但在决定使用哪种数据结构之前,您首先需要了解您正在开发的项目类型。.

结果

JSON 是一种轻量级数据格式,可用于共享、存储和处理数据。作为一种数据格式,JSON 在 API 中的支持日益广泛,包括 Twitter API。JSON 也是 JavaScript 的理想格式,并且在多种流行的编程语言中都有相应的实现。您可以在«JSON 简介»网站上查看完整的语言支持信息。.

由于您可能不会自己创建 .json 文件,而是从其他来源获取,因此与其关注 JSON 的结构,不如更多地考虑如何在应用程序中最佳地使用 JSON。例如,您可以使用开源工具 Mr. Data Converter 将电子表格应用程序中常见的 CSV 或制表符分隔数据转换为 JSON。您还可以使用采用知识共享许可的网站 Utilities-online.info 将 XML 转换为 JSON,反之亦然。.

最后,当将其他数据类型转换为 JSON 或创建自己的类型时,您可以使用 JSONLint 验证 JSON,并使用 JSFiddle 在 Web 开发环境中测试 JSON。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢