JSON官方说明:https://www.json.org/json-zh.html
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
本质上, JSON是一个基于文本的数据表达格式。
JSON包含两种基本数据结构:
(1)无序的键值对集合(A collection of name/value pairs)
键值对集合,Json中称之为对象(Object)
一个键值对包含key和value,之间通过冒号(:)分割。
key使用使用双引号引起来的字符串表示。value可以是:
- 双引号括起来的字符串(string)
- 数值(number)
- true
- false
- null
- 对象(object)
- 数组(array)
键值对的集合以 { 开始,以 } 结束,键值对之间使用 逗号 分隔。
样例:
{ "name" : "tom", "age" :18}
在不同的编程语言中,Json的 键值对集合 被解析成对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
(2)有序的值列表(An ordered list of values)
Json中称之为数组(array)。
一个数据以 [ 开始、以 ] 结束,中间包含多个 value,value之间通过 逗号 分隔。
如(1)中描述,value的类型可以是字符串、数值、true、false、null、object、array。
样例:
["tom", "nicel", "liya"]
(3) value的嵌套
如上所属,value字段可以是object、或数组(array)。称之为嵌套。如:
如下样例中
(a)Json文件包含1个键值对集合。这个集合中只有1个键值对,key是“person”,value是个数组。
(b)数组包含3个value。每个value又是 1个 键值对集合(object)。
{
"person": [
{
"name": "tom",
"age": 15,
"Gender": "Male"
},
{
"name": "nicel",
"age": 21,
"Gender": "Male"
},
{
"name": "liya",
"age": 19,
"Gender": "Female"
},
}
(4)Json中字符串、数值的取值范围
字符串(string)与C或者Java的字符串非常相似。是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
一个字符(character)即一个单独的字符串(character string)。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
(5)空白符
空白可以加入到任何符号之间。