JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁、易读且易于机器解析和生成,在Web开发、移动应用开发以及各种系统间的数据交互中得到了广泛应用,要让数据能够被正确地解析和使用,JSON对数据本身有着明确的要求,理解这些“规矩”对于开发者来说至关重要,否则可能会导致数据解析失败或产生意想不到的错误。
JSON对数据究竟有什么要求呢?我们可以从以下几个方面来理解:
数据类型的严格规定
JSON支持的数据类型是有限的,主要包括以下几种:
- 字符串(String):必须使用双引号()包围,不能使用单引号()。
"name"、"age"、"北京"。 - 数字(Number):包括整数和浮点数,不能使用引号包围,否则会被视为字符串。
25、14、-10,支持科学计数法,如5e3。 - 布尔值(Boolean):只有两个取值:
true和false(全小写,区分大小写)。 - 空值(Null):表示空值或无值,用
null(全小写,区分大小写)表示。 - 数组(Array):有序的值的集合,使用方括号(
[])包围,值之间用逗号()分隔,数组中的值可以是上述任意类型的数据。[1, "apple", true, null]。 - 对象(Object):无序的键值对(key-value pair)集合,使用花括号()包围,键值对之间用逗号()分隔,每个键必须是一个字符串(用双引号包围),值可以是上述任意类型的数据。
{"name": "张三", "age": 30, "isStudent": false}。
核心要求:JSON中的所有键(对象属性名)都必须是字符串类型,且必须用双引号包围,值则可以是上述六种类型之一。
语法结构的严谨性
除了数据类型,JSON的语法结构也必须严格遵守:
-
引号规范:如前所述,字符串和对象键必须使用双引号,单引号是非法的。
- 错误示例:
{'name': '李四'}(键和值都用了单引号) - 正确示例:
{"name": "李四"}
- 错误示例:
-
逗号使用:
- 在对象和数组中,相邻的元素或键值对之间必须用逗号分隔。
- 最后一项或最后一个键值对后面不能有逗号。
- 错误示例:
{"name": "王五", "age": 40,}(最后一个键值对后有逗号) - 错误示例:
[1, 2, 3, ](数组最后一项后有逗号) - 正确示例:
{"name": "王五", "age": 40}和[1, 2, 3]
-
花括号与方括号的配对:对象的花括号()和数组的方括号(
[])必须正确配对和嵌套,不能交叉或遗漏闭合符号。 -
值的有效性:一个JSON文档的有效值只能是前面提到的六种基本类型及其组合,不能包含函数、日期对象、正则表达式、注释(JSON标准不支持注释)等JavaScript或其他语言特有的类型。
- 错误示例:
{"name": "赵六", "sayHello": function() {alert("hi");}}(包含了函数) - 错误示例:
{"birthday": new Date("1990-01-01")}(包含了Date对象) - 正确示例(日期通常转为字符串):
{"birthday": "1990-01-01T00:00:00Z"}
- 错误示例:
-
编码:JSON标准通常使用UTF-8编码,对于非ASCII字符(如中文),可以直接使用,也可以使用Unicode转义序列(如
\u4e2d\u6587表示“中文”)。
数据结构的层次性
JSON支持数据的嵌套,即对象中可以包含其他对象或数组,数组中也可以包含对象或其他数组,这种层次性使得JSON能够灵活地表示复杂的数据结构。
{
"school": "XX大学",
"students": [
{
"id": 1,
"name": "小明",
"courses": ["数学", "物理"]
},
{
"id": 2,
"name": "小红",
"courses": ["语文", "英语", "化学"]
}
]
}
JSON对数据的要求可以概括为:类型有限、语法严谨、结构清晰,它不像JavaScript那样灵活,也不支持所有数据类型,开发者在使用JSON进行数据交换时,必须确保数据符合上述规范:
- 键必须是双引号字符串。
- 值只能是字符串、数字、布尔值、null、数组或对象。
- 字符串必须用双引号。
- 不能有尾随逗号。
- 不能包含函数、注释等非JSON标准类型。
遵循这些要求,生成的JSON数据才能被各种JSON解析器正确解析,确保数据在不同系统、不同语言之间顺畅流转和准确还原,记住这些“规矩”,就能让JSON更好地为你的数据交互服务。



还没有评论,来说两句吧...