更好的理解JSON及其属性和方法
主要内容:
1、一种数据格式,JSON不从属于JavaScript。
2、JSON可以表示以下三种结构的数据:
1、简单值:字符串的区别在于必须使用双引号,单引号会导致错误
如:5或者"hello World!"
2、对象:表示一组无序的键值对,当然都可以嵌套
注意区分js对象字面量与JSON对象。
JS对象字面量:当然也可以给属性名加"" var person = { name:"dadaoshenyi", age:"25" } JSON对象表示: { "name":"dadaoshenyi", "age":"25" }
3、数组:表示一组有序的值的列表
JS数组字面量: var values = [25 ,"hi",true]; JSON数组表示:同样的语法,当然数组之中可以嵌套对象 [25 ,"hi",true] 多层嵌套的数据结构最常用,如下表示返回的data { "name":"dadaoshenyi", "list":[{ "title":"title1", "pic":"url1" },{ "title":"title2", "pic":"url2" }, ...], "age":"25", ... }
3、JSON的解析与序列化:
使用与js对象一样的方法来获取属性值。
早起的JSON解析器都是使用JavaScript的eval()函数。
ES5对JSON的解析进行了规范,定义了全局对象JSON。
主要方法两个如下:
JSON.stringify(value [, replacer] [, space]);将原生js值转化为JSON字符串。
value: 要转换的原生js值;
replacer:过滤条件,可以是一个值,也可以是个函数;
space:可以是一个数字表示缩紧的空格数,也可以是制表符如"--"。除了好看一点似乎没有用途。
JSON.parse(text [, reviver]);将JSON字符串转化为原生js值。
text:要解析的jsonText文本;
reviver:还原函数,对结果的每个键值对都调用一次。
var jsonStr = JSON.stringify({ name:"dadaoshenyi", list:[{ title:"title1", pic:"url1" },{ title:"title2", pic:"url2" }], age:"25" }); console.log(jsonStr); var obj = JSON.parse(jsonStr); console.log(obj);