JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言。
JSON的基本结构是“名称/值”对的集合,一个值可以是字符串、数字、对象、数组、布尔值或者null,这些结构可以嵌套,创建复杂的数据结构,一个数组可以包含多个对象,每个对象又可以包含多个“名称/值”对。
JSON有两种结构:
1、对象:对象是一个无序的“名称/值”对集合,一个对象以“{”(左括号)开始,以“}”(右括号)结束,每个“名称”后跟一个冒号(:),“名称/值”对之间使用逗号(,)分隔。
{ "name": "张三", "age": 30, "isStudent": false, "courses": ["math", "english"] }
在这个例子中,"name"、"age"、"isStudent"和"courses"都是对象的“名称”,对应的值分别是"张三"、30、false和["math", "english"]。
2、数组:数组是值的有序集合,一个数组以“[”(左中括号)开始,以“]”(右中括号)结束,值之间使用逗号(,)分隔。
[ "apple", "banana", "cherry" ]
在这个例子中,"apple"、"banana"和"cherry"都是数组的值。
JSON还有一些特殊字符需要转义,才能在JSON文本中使用,以下是一些常见的转义字符:
- \b:退格符
- \f:换页符
-
:换行符
- \r:回车符
- \t:制表符
- \u四位十六进制数:表示一个Unicode字符
- \\:反斜杠
- \':单引号
- \":双引号
- \/:正斜杠
- \?:问号
- \#:井号
- {:左大括号
- }:右大括号
- [:左中括号
- ]:右中括号
- 0到\9:表示八进制数的0到9的数字
- \minus:减号
- \plus:加号
- \div:除号
- 小数点:小数点符号
- \.:点号
- 空格符:空格字符
- 非首尾空格符:非首尾的空格字符,用\ xhh表示,其中hh是1到2位十六进制数,表示空格字符的ASCII码,\ x20表示ASCII码为32的空格字符。
- 非换行空白符:非换行的空白符,用\ nhh表示,其中hh是1到2位十六进制数,表示空白字符的ASCII码,\ nf表示ASCII码为10的换页符。
- Unicode字符:用\ u四位十六进制数表示。 u4e2表示汉字“汉”。
JSON也有一些内置的值,可以直接表示某些常量,以下是一些常见的内置值:
- true:真值,表示逻辑真,等价于Boolean对象的true属性。
- false:假值,表示逻辑假,等价于Boolean对象的false属性。
- null:空值,表示没有值或者该处不应该有值,等价于Null对象。
- undefined:未定义,表示变量被声明了,但没有赋值,等价于undefined。
- Number:数字类型,可以是整数或浮点数,42、3.14、16e5都表示Number类型的值,注意,JSON中的Number类型不支持无穷大和NaN(Not a Number),如果需要一个特殊的数值表示无穷大或NaN,可以使用Infinity和-Infinity分别表示正无穷大和负无穷大,使用NaN表示非数值,Infinity、-Infinity和NaN都是Number类型的值。