引言

是一种共享数据的格式,也就是 JSON 的缩写。 顾名思义,JSON 来源于 JavaScript 编程语言,但它可以被许多语言使用,包括 Python、 Ruby、 PHP 和 Java。 Json 的发音通常与名字“ Jason”类似

使用。 当 json 扩展独立运行时。 当它以另一种文件格式定义时(如。 Html) ,它可以以 JSON 字符串的形式出现在引号中,也可以是分配给变量的对象。 这种格式很容易在 web 服务器和客户端或浏览器之间传输。

Json 非常具有可读性和轻量级,是 XML 的一个很好的替代品,并且需要的格式化要少得多。 本信息指南将帮助您了解 JSON 文件中可以使用的数据,以及这种格式的一般结构和语法。

语法和结构

Json 对象是一种键值数据格式,通常使用大括号呈现。 当您使用 JSON 时,您可能会在。 它们也可以作为 JSON 对象或字符串存在于程序的上下文中。

Json 对象看起来是这样的:

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

虽然这是一个非常简短的例子,JSON 可以有很多行长,但是这表明格式通常是用两个花括号(或者花括号)设置的,它们看起来像这样的{}在两端,并且用键值对填充两者之间的空间。 Json 中使用的大多数数据最终都封装在一个 JSON 对象中。

键值对之间有一个冒号,如“ key”中的“ value”。 每个键-值对由一个逗号分隔,因此 JSON 的中间部分看起来如下: “ key” : “ value”、“ key” : “ value”、“ key” : “ value”。 在上面的示例中,第一个键值对是“ first name” : “ Sammy”。

JSON 的钥匙在结肠的左边。 它们需要用双引号包装,如“ key”中所示,并且可以是任何有效的字符串。 在每个对象中,键都必须是唯一的。 这些关键字符串可以包含空白空间,就像“ first name”中一样,但是在编程时这会使访问更加困难,因此最好使用下划线,就像“ first name”中一样。

Json 值在冒号的右边。 在粒度级别上,它们需要是6种简单的数据类型之一:

  • 字符串
  • 数字
  • 对象
  • 数组
  • 布尔值(true 或 false)

在更广泛的层次上,值也可以由 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 对象不同,因此,尽管你可以在 JavaScript 对象中使用函数,但你不能在 JSON 中使用它们作为值。 Json 最重要的特性是,它可以很容易地在编程语言之间以所有参与语言都可以使用的格式进行转换。 对象只能通过 JavaScript 编程语言直接使用。

到目前为止,我们已经看到了 JSON 格式最简单的方面,但是 JSON 可以变得层次化和复杂,由嵌套的对象和数组组成。 我们将在下一节中介绍更复杂的 JSON。

在 JSON 中使用复杂类型

Json 除了可以存储嵌套数组外,还可以存储 JSON 格式的嵌套对象。 这些对象和数组将作为分配给键的值传递,通常也由键值对组成。

嵌套对象

在下面的 users.JSON 文件中,对于四个用户(“ sammy”、“ jesse”、“ drew”、“ jamie”)中的每一个,都有一个嵌套的 JSON 对象作为每个用户的值传递,并且具有与每个用户相关的嵌套的“ username”和“ location”键。 下面突出显示了第一个嵌套 JSON 对象。

users.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 对象,每个 JSON 对象有四个用户的相关用户名和位置数据。 就像任何其他值一样,在使用对象时,逗号用于分隔元素。

嵌套数组

通过使用作为值传递的 JavaScript 数组,数据也可以嵌套在 JSON 格式中。 Javascript 在其数组类型的两端使用方括号[]。 数组是有序的集合,可以包含不同数据类型的值。

当我们处理大量数据时,我们可能会使用一个数组,这些数据可以很容易地组合在一起,比如有各种各样的网站和与单个用户相关的社交媒体资料。

突出显示第一个嵌套数组,Sammy 的用户配置文件可能如下所示:

user_profile.json
{ 
  "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"
    }
  ]
}

“网站”键和“社交媒体”键各自使用一个数组来嵌套属于 Sammy 的2个网站链接和3个社交媒体档案链接的信息。 由于方括号的使用,我们知道这些是数组。

在 JSON 格式中使用嵌套可以让我们处理更复杂和层次化的数据。

与 XML 的比较

或者 e x 可处理的 m arkup l 语言,是一种存储可被人类和机器读取的可访问数据的方法。 Xml 格式可在许多编程语言中使用。

在许多方面,XML 与 JSON 非常相似,但它需要更多的文本,因此长度更长,读写时间更长。 必须使用 XML 解析器解析 XML,但是可以使用标准函数解析 JSON。 与 JSON 不同的是,XML 不能使用数组。

我们将查看 XML 格式的一个示例,然后查看用 JSON 呈现的相同数据。

users.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>
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 是 JavaScript 中使用的一种自然格式,并且在许多流行的编程语言中有许多可用的实现。 您可以在“ Introducing JSON”站点上看到完整的语言支持,jQuery 库还可以负责兼容性和解析。

在大多数情况下,您不会编写纯 JSON,而是从数据源或将其他数据文件转换为 JSON。 您可以使用开源工具“数据转换器先生”将电子表格程序中可能找到的 CSV 或制表符分隔的数据转换为 JSON。 您可以通过 Creative Commons-licensed utilities-online 将 XML 转换为 JSON,反之亦然。 信息网站。 当使用自动化工具时,您应该验证结果并根据需要删除冗余。

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

总结

Json 是一种轻量级格式,使您能够轻松地共享、存储和处理数据。 作为一种格式,JSON 在 API 中得到了越来越多的支持,包括 Twitter API。

因为你很可能不会创造自己的。 但是从其他来源获取 JSON 文件时,重要的是少考虑 JSON 的结构,多考虑如何在程序中最好地使用 JSON。