一、什么是json
json是一种数据格式。js中可以通过json这种数据格式在前端和后台之间传值。但不只仅仅js用json这种数据格式来传值,Java、.net、PHP 等语言也都有各自的方法,将对象解析为json的方法和将json序列化为对象的方法。
二 、json的语法
1、简单值
与JavaScript中类似的语法。json可以表示为:字符串、数字、布尔和null,但是在JavaScript 中的undefined不能再json中使用。
例如:创建一个简单值的json
5 //数值型;
"aihao" //字符串型
null //null型
false //布尔型
2、对象
对象是一种复杂的数据类型。它可以表示一组无序的键值对,键值对中的值,可以为简单值,也可以为复杂类型值。
例如:创建一个对象的json
'{"name":"xiaoming","age":10}'
可以看到json对象与JavaScript对象不同:首先,不需要声明json(没有var);其次json里面的属性也要用双引号括起来。js中的属性可以用双引号,也可以不用双引号。
3、数组
数组也是一种复杂的数据格式。数组里面可以包含对象,这是json常用的组合方法。
例如:创建一个数组json
'[{"name":"xiaoming","age":10},{"name":"xiaohong","age":20}]'
三、JavaScript中JSON的解析与序列化
1、早期的解析与序列化,eval()
var json='[{"name":"xiaoxiao","age":10},{"name":"xiaoming","age":20}]';//创建json数组
var json1=eval(json);//将json格式数据解析为JavaScript对象
2、JavaScript对象序列化为json对象
JSON.stringify()函数
JSON.stringify()函数有三个参数。第一个参数表示有效的js对象,(必需)。第二个参数表示数组或者toJSON方法,(可选);
第三个参数表示层级缩进,(可选).
例如:创建一个JavaScript数组,并用JSON.stringify()函数把它序列化为json
var object =[{name:'xiaoxiao',age:100},{name:'xiaoming',age:200}]; //创建一个JavaScript数组
var json=JSON.stringify(object); //将JavaScript数组序列化为json字符串
alert(json); //'[{"name":"xiaoxiao","age":100},{"name":"xiaoming","age":200}]'
3、json对象解析为JavaScript对象
JSON.parse()函数
JSON.parse()函数有两个参数,第一个参数表示json对象,(必需)。第二个参数为还原函数(可选)。
例如:创建一个json数组,并用JSON.parse()函数把它解析为JavaScript对象
var json ='[{"name":"xiaoxiao","age":100},{"name":"xiaoming","age":200}]'; //创建一个json数组
var object=JSON.parse(json); //将json值全部解析为JavaScript对象
alert(object); //[object Object],[object Object]