JSON是一种数据格式,不是编程语言;
JSON.stringify();JSON.parese();
过滤函数;还原函数。
书摘&心得
- JSON是一种数据格式,不是一种编程语言
- JSON可以表示三种类型
- 简单值
- JSON 字符串必须使用双引号
- 对象
- 与javascript对象的区别
- 没有声明变量
- 没有末尾的分号
- 对象的属性必须加双引号
- 与javascript对象的区别
- 数组
- 也没有变量和分号
- 简单值
可以把JSON 数据结构解析为有用的 JavaScript 对象
序列化
JSON 对象有两个方法:
- stringify()
- JavaScript->JSON
- 把JavaScript 对象序列化为 JSON 字符串
- 只保留有效JSON数据类型
- 所有函数及原型成员都会被有意忽略,不体现在结果中。
- 值为undefined 的任何属性也都会被跳过
- parse()
- JSON->JavaScript
- 把 JSON 字符串解析为原生 JavaScript 值
- 如果传给 JSON.parse()的字符串不是有效的 JSON,该方法会抛出错误
序列化选项
1、 stringify的过滤函数
第二个参数是数组: ```javascript var book = { “title”: “Professional JavaScript”, “authors”: [ “Nicholas C. Zakas” ], edition: 3, year: 2011 }; // 在返回的结果字符串中,就只会包含这两个属性 var jsonText = JSON.stringify(book, [“title”, “edition”]);
- stringify()
// 结果 {“title”:”Professional JavaScript”,”edition”:3}
第二个参数是函数:```javascriptvar jsonText = JSON.stringify(book, function(key, value){switch(key){case "authors":return value.join(",")case "year":return 5000;case "edition":return undefined; // 会被忽略default:return value;}});
第三个参数控制缩进和空白符
var jsonText = JSON.stringify(book, null, 4);var jsonText = JSON.stringify(book, null, " - -");
2、parse的还原函数
- 如果还原函数返回 undefined,则表示要从结果中删除相应的键。
- 在将日期字符串转换为 Date 对象时,经常要用到还原函数。
var book = {"title": "Professional JavaScript","authors": ["Nicholas C. Zakas"],edition: 3,year: 2011,releaseDate: new Date(2011, 11, 1)};var jsonText = JSON.stringify(book);var bookCopy = JSON.parse(jsonText, function(key, value){if (key == "releaseDate"){return new Date(value);} else {return value;}});alert(bookCopy.releaseDate.getFullYear());
