JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,JSON是一种独立于语言的文本格式,但是它使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言。
JSON的基本结构有两种:对象(object)和数组(array),对象是由键值对组成的无序集合,键是字符串,值可以是任意数据类型,数组是由有序的值组成的集合,每个值的类型可以不同,值可以是字符串、数字、布尔值、对象或者数组。
JSON对象的表示形式如下:
{ "key1": "value1", "key2": "value2", "key3": { "subkey1": "subvalue1", "subkey2": "subvalue2" }, "key4": [ "value4", "value5", "value6" ] }
在这个例子中,key1
、key2
、key3
和key4
都是字符串类型的键,value1
、value2
、subvalue1
、subvalue2
、value4
、value5
和value6
都是字符串类型的值。key3
的值是一个对象,它包含两个子键subkey1
和subkey2
,它们的值分别是subvalue1
和subvalue2
。key4
的值是一个数组,它包含三个字符串类型的值。
JSON数组的表示形式如下:
[ "value1", "value2", { "subkey1": "subvalue1", "subkey2": "subvalue2" }, [ "value3", "value4", "value5" ] ]
在这个例子中,第一个元素是一个字符串类型的值,第二个元素是一个对象,它包含两个子键subkey1
和subkey2
,它们的值分别是subvalue1
和subvalue2
,第三个元素是一个数组,它包含三个字符串类型的值。
JSON还有一些特殊的值:null
、true
、false
和undefined
,它们分别表示空值、真、假和未定义。
{ "name": "John", "age": null, "isStudent": false, "address": undefined, "hobbies": ["reading", "traveling"] }
在这个例子中,age
的值是空值,表示这个人的年龄未知;isStudent
的值是假,表示这个人不是学生;address
的值是未定义,表示这个人的地址未知;hobbies
的值是一个数组,它包含两个字符串类型的值。
JSON还支持一些特殊的字符:双引号(")、单引号(')、反斜杠(\)、斜杠(/)、冒号(:)、逗号(,)、分号(;)、大括号({})、中括号([])、小括号(())、方括号([])和花括号({}),这些字符在JSON中有特殊的含义,不能直接作为键或值的一部分,如果需要使用这些字符作为键或值的一部分,需要用反斜杠进行转义。
{ "name": "John \"Doe\" Smith", "address": "123 Main St. Suite A", "phones": [{"type": "home", "number": "555-555-1234"}, {"type": "office", "number": "555-555-5678"}], "emails": ["john.doe@example.com"], "comments": [{"author": "Jane Doe", "text": "I like this!"}, {"author": "John Smith", "text": "I don't like this."}], "scores": {"math": 90, "english": 85, "history": 92} }
在这个例子中,人的名字是"John Doe Smith",地址是"123 Main St. Suite A",电话号码有两个,一个是家庭电话,号码是"555-555-1234",另一个是办公室电话,号码是"555-555-5678",电子邮件只有一个,地址是"john.doe@example.com",评论有两个,一个是Jane Doe写的,内容是"I like this!",另一个是John Smith写的,内容是"I don't like this.",分数有三个,数学是90分,英语是85分,历史是92分。