什么是Json?
(Javascript object notation)->javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据,2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。
JSON的语法可以表示以下三种类型的值:
1.简单值:
字符串,数值,布尔值,null
字符串必须使用双引号表示,而不能使用单引号,数值必须以十进制表示,且不能使用NaN和Infinity
说明:JSON不支持Javasript中的特殊值undefined
2.对象
对象作为一种复杂数据类型,表示的是一组有序的键值对儿,而每个键值对儿中的值可以使简单值,也可以是复杂数据类型的值
JSON中对象的键名必须放在双引号里面,因为JSON不是javascript语句,所以没有末尾的分号
说明:同一个对象中不应该出现两个同名属性
3.数组:
数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值
说明:数组或对象最后一个成员的后面,不能加逗号
eval()把代码转换成javascript可以执行的代码
声明全局变量data=null;
原本在responseText返回的Json对象是字符串,若想调用Json对象中数组会报错,所以可以采用eval函数
在响应函数中调用成功部分设置data=eval("("+xhr.responseText+")");
console.log(data.slider);
JSON对象的两个方法:
parse()
语法:JSON.parse()
功能:用于将JSON字符串转化为对象
例如:
data=JSON.parse(xhr.responseText);
stringify()
语法:JSON.stringify()
功能:用于将一个值转为字符串,该字符串应该符合JSON格式,并且可以被JSON.parse()方法还原
总结:JSON之所以流行,是因为可以把JSON数据结构解析为有用的javascript对象
JSON对象的stringify()和parse()这两个方法可以分别用于把javascript对象序列化为JSON字符串和把JSON字符串解析为原生javaScript值
javaScript的eval()类似于JSON.parse()方法,可以将json字符串转换为json对象,但是,eval()可以执行不符合JSON格式的代码,有可能会包含恶意的代码,尽量少用