JSON(JavaScript Object Notation)是一种为数据交换而设计的基于文本的文件格式。它表示基于JavaScript对象语法的结构化数据。因此,JavaScript程序可以将JSON数据转换为原生JavaScript对象,而无需解析或序列化数据。
JSON因其自描述、易于理解、轻量级和紧凑的风格而广受欢迎。它与许多编程语言、环境和库兼容。
在本文中,我们将解释JSON是什么以及如何使用它来管理数据。我们还将为您提供可下载的备忘单,以帮助您了解这种数据格式。
什么是JSON文件以及为什么要使用它
JSON是一种存储结构化信息的格式。它主要用于在服务器和客户端之间传输Web应用程序数据。JSON以字符串或对象的形式出现在扩展名为.json的文件中或在引号内,以其他文件格式分配给变量。
JSON是扩展标记语言 (XML) 的一种简单且轻量级的替代方案,XML作为一种数据交换格式已经变得不那么普遍了。这是因为将XML转换为JavaScript对象需要数十到数百行代码,并且需要根据要解析的特定元素进一步定制。
相比之下,JSON解析器只需一行代码即可将文本转换为JavaScript,因为两者的语法非常相似。
JSON利用服务器端解析来提高响应能力。该过程不需要任何关于被解析对象的先验知识。这就是JSON被广泛用作标准数据交换格式的原因。
此外,它允许用户通过使用称为JSON padding (JSONP) 的方法从不同域请求数据,该方法采用回调函数来传输JSON数据。它有效地绕过了同源策略的限制。
了解JSON语法
由于JSON结构基于JavaScript对象文字语法,因此它们有许多相似之处。
这些是JSON语法的核心元素:
- 数据以key/value对的形式呈现。
- 数据元素用逗号分隔。
- 花括号{}确定对象。
- 方括号[]表示数组。
因此,JSON对象字面量语法如下所示:
{“key”:“value”,“key”:“value”,“key”:“value”.}
值的类型
在本节中,我们将讨论JSON值的类型。
Array
数组是值的有序集合。数组值可以包含JSON对象,这意味着它使用相同的键/值对概念。例如:
{ "students":[ {"firstName":"Tom", "lastName":"Jackson"}, {"firstName":"Linda", "lastName":"Garner"}, {"firstName":"Adam", "lastName":"Cooper"} ] }
方括号内的信息构成了三个对象的数组。
Object
JSON对象由两个组件对组成:
- Keys是字符串——被引号包围的字符序列。
- Values是有效的JSON数据类型。它们可以是数组、对象、字符串、布尔值、数字或空值的形式。
冒号放在每个键和值之间,用逗号分隔对。这两个组件都用引号引起来。
{ "employees":{ "firstName":"Tom", "lastName":"Jackson" } }
在这里,employees是关键,而花括号内的一切都是对象。
String
字符串值是零个或多个Unicode字符的集合序列,它们用双引号括起来。
例如:
{"firstName":"Tom"}
此示例显示Tom表示一个字符串,因为它是双引号内的一组字符。
Number
JSON中的数字应该是integer或floating point。
例如:
{“age”:30}
Boolean
Boolean包含true或false作为值。
例如:
{“married”:false)
Null
Null是一个空值。这是为了表明没有信息。
例如:
{"bloodType":null}
存储JSON数据的方法
存储JSON数据的方法有两种——对象和数组。前者是键/值对集合,而后者是值列表。
在本节中,我们将进一步解释使用对象和数组存储JSON数据。
使用对象
JSON对象以大括号开头和结尾。它包含称为属性的键/值对,每行用逗号分隔。每个键和值之间都有一个冒号。
虽然键必须是字符串,但值可以是六种JSON数据类型中的任何一种——字符串、数字、对象、数组、布尔值或空值。
请注意,JSON对象与JSON数据类型中的对象不同。前者用作存储数据的方法,而后者表示键/值对的关联数组。
让我们看一个例子,我们有三个键/值对。firstName、lastName和gender是键,Tom、Jackson和male是值。
JSON对象将如下所示:
{ "firstName":"Tom", "lastName":"Jackson", "gender":"male" }
使用的值是字符串,因此,它们也在引号内,就像键一样。
使用数组
另一种存储数据的方法是使用数组。这些值用方括号括起来,每行用逗号分隔。JSON数组中的每个值都可以是不同的类型。
请记住,JSON数组不同于作为值的数组——后者由有序的元素集合组成,通常都是相同类型。
看看这个例子:
{ "firstName":"Tom", "lastName":”Jackson”, “gender”:”male”, "hobby":[ “football", "reading", "swimming" ] }
这与之前的方法不同的是第四个键/值对。hobby是关键,方括号中有几个值(足球、阅读、游泳)代表一个数组。
当与JSONP配对时,数组可以用来克服跨域问题。它们还支持循环,让用户运行重复的命令来查找数据,从而使过程更快、更有效。
JSON备忘单
使用JSON编码
这是JSON用法的一个简单示例——为了清楚起见,我们将分解每个元素。
{ "className":"Class 2B", "year":2022, "phoneNumber":null, "active":true, "homeroomTeacher":{"firstName":"Richard", "lastName":"Roe"}, "members":[{ "firstName":"Jane","lastName":"Doe"}, {"firstName":"Jinny","lastName":"Roe"}, {"firstName":"Johnny","lastName":"Roe"}, ] }
以下是每对表示的内容:
- 第一行 “className”:”Class 2B” 是一个字符串。
- 第二对 “year”:2022 有一个数值。
- 第三对 “phoneNumber”:null 代表一个空值——没有值。
- 第四对 “active”:true 是一个布尔表达式。
- 第五行 “homeroomTeacher”:{ “firstName”:”Richard”, “lastName”:”Roe” }表示一个对象字面量。
- 最后,从第六行开始的脚本是一个数组。
小结
JavaScript Object Notation (JSON) 是一种人类可读的基于文本的格式,专为数据交换而设计。许多编程语言、环境和库都支持它。
JSON值得注意,因为它允许用户使用JSONP功能跨域请求数据。更重要的是,它比XML更简单、更轻量级。
JSON语法由两个核心元素组成——作为六种可用数据类型之一的值和作为字符串的键。
在存储数据方面,JSON提供了两种方法:
- 对象。此方法以大括号开头和结尾,并且有两个或多个键/值对,用逗号分隔它们。每个键后面都有一个冒号,以将其与关联的值区分开来。
- 数组。此方法使用方括号将元素括起来,并用逗号分隔它们。
评论留言