JSON数据
本部分大致介绍了JSON数据的结构。通常,json数据存储在json(实例)文档中,但它也可以作为json数据片段存储在另一种类型的文档中。JSON数据片段或文档是一种JSON数据结构,其广义定义如下所述。
XMLSpy还支持JSON5,它是JSON的扩展,添加了一些最小的ECMScript 5扩展。有关更多信息,请参见json5.org。
JSON对象和数组
JSON文档(通常带文件扩展名.json进行保存)是基于以下核心数据结构构建的:
对象
object由大括号分隔,它是一个由零对或多对key:value组成的无序集合。这些key:value对是properties of the object.。键必须始终是一个字符串,因此必须总是用引号括起来。键(也称为属性的名称)与其值用冒号分隔。属性值可以是任何JSON数据类型(参见下方列表)。属性之间用逗号分隔。下方列表是一个带有三个属性的对象示例(所有属性都具有原子型的值):
{
"emailtype": "home",
"emailaddress": "contact01.home@altova.com",
"citycode": 22
}
数组
array由方括号分隔,它是一个包含零个或多个items,以逗号分隔的有序列表。这些数据项可以是任何JSON数据类型(参见下方列表)。
下方数组由两个对象(每个对象都括在大括号中)组成。数组本身括在方括号中。
[ { "emailtype": "home", "emailaddress": "contact01.office@altova.com", "citycode": 22 }, "emailtype": "office", "emailaddress": "contact01.office@altova.com", "citycode": 22 } ]
|
下方列表是一个带有三对key:value的对象。每个值都是一个数组,包含一个元组(序列)。(一个元组可以被视为一个一维数组。) 每个元组中的三个数据项都是原子类型。
{ "x": [ 1, 2, "abc" ], "y": [ 3, 4, "def" ], "z": [ 5, 6, "ghi" ] }
|
JSON数据类型
对象属性值和数组项可以是以下类型:
•string(必须用引号括起来):一个字符串还可以被指定为具有某种格式,例如date-time或email格式。
•number:带有小数部分的数字,包括整数。
•integer:不带小数部分的数字;它是number类型的子集。
•boolean(true/false,无需括在引号中)
•object:当在另一个对象中使用时,允许嵌套数据。
•array:与对象相比,它允许您构建更复杂的结构。
•null(null,无需括在引号中)
JSON数据示例
下方是一个JSON数据片段示例。您可以从中看到该文档是如何以对象和数组构建的。还请注意键值的数据类型;字符串的值被括在引号中,其他类型用绿色标记。
{
"first": "Jason",
"last": "Jones"
"isManager": true,
"age": 35,
"address": {
"street": "Jason Avenue",
"city": "Jasonville",
"state": "JS",
"postcode": "JS12 ON34"
},
"phone": [
{
"type": "home",
"number": "12 3456-7890"
},
{
"type": "office",
"number": "789 012-34567"
}
],
"children": [],
"partner": null
}
JSON5和JSON之间的一些区别
JSON5是JavaScript的一个严格的子集,不添加任何新的数据类型,并且可以处理所有现有的JSON内容。下方列出了一些值得注意的区别:
•JSON5支持注释功能。注释的分隔符如下:// comment //或/* comment */。
•在JSON5中,key:value对的键部分不需要括在引号中。
•在JSON5中,可以跨多行编写字符串。
•JSON5文档可以根据JSON Schema进行验证。