1. 六个构造字符:
begin-array = ws %x5B ws ; [ 左方括号
begin-object = ws %x7B ws ; { 左大括号
end-array = ws %x5D ws ; ] 右方括号
end-object = ws %x7D ws ; } 右大括号
name-separator = ws %x3A ws ; : 冒号
value-separator = ws %x2C ws ; , 逗号
2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):
ws = *(%x20 /; 空间
%x09 /; 水平标签
%x0A /; 换行或换行
%x0D); 回程
3.JSON 的值:
3.1 JSON 的构成: ws 值 ws [1]
3.2 值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。
值中的字面值中的英文必须使用小写。
3.2.1 对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由
逗号分割的键值对组成,如:
- {"name": "John Doe", "age": 18, "address": {"country" : "china",
- "zip-code": "10000"}}
JSON 中的对象可以包含多个键值对,并且有数组结构,该语言正是一次实现过程内容
的描述。
3.2.2 数组是由方括号括起来的一组值构成,如:
[3, 1, 4, 1, 5, 9, 2, 6]
3.2.3 字符串与 C 或者 Java 的字符串非常相似。字符串是由双引号包围的任意数量
Unicode 字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串
(character string)。
3.2.4 数字也与 C 或者 Java 的数值非常相似。除去未曾使用的八进制与十六进制格式。
除去一些编码细节。
一些合法的 JSON 的实例:
- {"a": 1, "b": [1, 2, 3]}
- [1, 2, "3", {"a": 4}]
- 3.14
- "plain_text"
- var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用
- 引号包裹的
- var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质
- 是一个字符串
- var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是
- {a: 'Hello', b: 'World'}
要实现从 JS 对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
- var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是
- '{"a": "Hello", "b": "World"}'
任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是
对象和数组是比较特殊且常用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1,
key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应
的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript",
"vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使
用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可
以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支
持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到 AJAX
时,如果需要用到数组传值,这时就需要用 JSON 将数组转化为字符串。 [3]
1、表示对象
对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名
称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔。
{"firstName": "Brett", "lastName": "McLaughlin"}
2、表示数组
和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 []。
- {
- "people":[
- {
- "firstName": "Brett",
- "lastName":"McLaughlin"
- },
- {
- "firstName":"Jason",
- "lastName":"Hunter"
- }
- ]
- }
这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含两个条目的数组,
每个条目是一个人的记录,其中包含名和姓。上面的示例演示如何用括号将记录组合成一个
值。当然,可以使用相同的语法表示更过多的值(每个值包含多个记录)。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结
构中,可以改变表示数据的方式,也可以使用不同方式表示同一事物。
如前面所说,除了对象和数组,你也可以简单地使用字符串或者数字等来存储简单的数
据,但这样并没有多大意义。