What?
json全称:JavaScript 对象表示法(JavaScript Object Notation)。
json定义:jason是一种轻量级的数据交换格式,它基于 ECMAScript (JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
Why?
由于json的简洁和清晰的结构模式使得json成为理想的数据交换语言,更易于人们的编写和阅读,同时也方便机器的编译和生成,并且能有效的提升网络传输效率。
对于AJAX程序来说json比XML更快更易于理解。
How?
JSON语法规则:
- 花括号保存对象
- 方括号保存数组
- 键名要有双引号(字面量方式表示对象,键名不需要双引号)
- 字符串值要有引号
- 键值之间是冒号
- 键值对之间是逗号
JSON数据的书写格式:键/值 key:value
键/值 包括字段名称(要加双引号),后面是一个冒号,然后是值。
"Name":"Ben"
等价于下面这条javascript语句
Name = "Ben"
JSON的值:
- 数字(整数/浮点数)
- 字符串(在双引号中)
- 逻辑值(true/false)
- 数组(在方括号中[])
- 对象(在花括号中{})
- null(代表"空"值,表示当前对象引用"未引用的对象")
JSON对象:
JSON对象可以包括多个键值对。
JSON对象是由花括号括起来的,用逗号分割的键(key)/值(value)对构成。
如:
{ "name":"王凯",//属性---->键值对 "age":18, "hobby":"学习" }
等价于下面这条javascript语句。
如:
name = "王凯" age = 18 hobby = "学习"
JSON数组:
JSON数组是写在方括号[]当中的。
JSON数组可以包含多个对象。
如:
{ "obj":[ {"name":"王凯","age":18}, {"name":"席家豪","age":6}, {"name":"大黄","age":2} ] }
在上面这个例子当中,对象"obj"是包含三个对象的数组,每个对象都是一条记录。
JSON与JavaScript对象的关系:
JSON是JavaScript对象的字符串表示法,它使用json文本表示一个JavaScript 对象的信息,其实本质上也是一个字符串。
let obj = {name1:'Ben',name2:'John'}://这是一个对象,它的键名也可以用双引号包裹 let json = '{"name1":"Ben","name2":"John"}'://这是一个JSON字符串,本质上也是一个字符串,用这种方法表示时,记得里面双引号外面就要单引号,里面单引号,外面就要双引号。
JSON与JavaScript对象的相互转换:
- 使用 JSON.parse(),把JSON字符串转换为JavaScript对象。
let obj = JSON.parse('{"name1":"Ben","name2":"John"}');//结果是{name1:'Ben',name2:'John'}
- 使用 JSON.stringify(),把JavaScript对象转换为JSON字符串。
let json = JSON.stringify({name1:'Ben',name2:'John'})://结果是'{"name1":"Ben","name2":"John"}'
常用类型:
- 任何支持的类型都可以用JSON来表示,数字,字符串,数组,对象等。但是字符串和对象是比较特殊和常用的两种类型。
- 对象类型:对象在JavaScript中是使用花括号{}包起来的,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的编程语言中,key为对象的属性,value为对应的值,键名key可以使用整数和字符串来表示,而值value的类型可以是任何类型。
- 数组类型:数组在JavaScript中是使用方括号[]包起来的,数据结构为["JAVA","C","DIDI",....]的索引结构,在JavaScript中,数组是一种比较特殊的数据类型,他可以像对象那样使用键值对,但是还是上面这种索引的结构使用的比较多,同样的,值value的类型可以是任何类型。