JavaScript JSON语法
2016-04-04 10:43
411 查看
一、语法 1.JSON 的语法可以表示以下三种类型的值 ①简单值:使用与JavaScript 相同的语法,可以在JSON 中表示字符串、数值、布尔值和null。但JSON 不支持JavaScript 中的特殊值undefined。 ②对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。 ③数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组。 eg: { // 简单值 "name" : "yang", // 字符串 "age" : 20, // 数字 "isBoy" : false, "wife" : null, // 对象 "sports" : { "ball" : "pingpong", "water" : "swimming" }, // 数组 "fruits" : ["apple", "pear", "banana"] } 二、解析与序列化 1.JSON对象 // 将对象转换为字符串 var json = JSON.stringify(person); // object ==> JSON // alert(json); var obj = JSON.parse(json); // JSON ==> object // alert(obj); // [object Object] 2.序列化选项 ①过滤结果 // 第一种:字符串形式 // JSON.stringify()的第二个参数是数组或函数,其中包含两个字符串,返回结果仅返回name和fruits属性 var json = JSON.stringify(person, ["name", "fruits"]); // object ==> JSON alert(json); // {"name":"yang","fruits":["apple","pear","banana"]} // 第二种:函数形式 var json = JSON.stringify(person, function (key, value) { switch(key) { case "name": return "xiao yang"; // 将name的值修改 case "fruits": return value.join("|"); // 将fruits的项用|连接 default: return value; } }); alert(json); ②字符串缩进,JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符 // 用---连接 var json = JSON.stringify(person, ["name", "fruits"], "---"); // object ==> JSON alert(json); ④toJSON:可以自定义返回的数据,其实是过滤器的一种补充。 var person = { // 简单值 name : "zhang", toJSON : function () { return this.name; } } var json = JSON.stringify(person); // object ==> JSON alert(json); // "zhang" ⑤解析选项: JSON.parse()方法也接受两个参数 第一个为json字符串 第二个为还原函数,和json.stringifY的第二个参数过滤器相似 eg: var person = { // 简单值 name : "zhang", age : 20, releaseDate: new Date(2011, 11, 1) } var jsonText = JSON.stringify(person); var bookCopy = JSON.parse(jsonText, function(key, value){ if (key == "releaseDate"){ return new Date(value); // 将releaseDate的值转化为对象 } else { return value; } }); alert(bookCopy.releaseDate.getMonth()); // 11
相关文章推荐
- JavaScript表单之基础篇
- javascript拖拽效果延伸学习
- JS 字符串的操作
- json和字符串
- javascript事件委托的用法及其好处简析
- 基于javascript制作微博发布栏效果
- 第一章 JavaScript基础
- 理解js中的this对象
- JS中的prototype
- JSP中pageEncoding和charset区别,中文乱码解决方案
- 纯js+html和纯css+html制作手风琴效果
- extjs使用OpenLayer3
- Express.js路由详解
- JS该不该用位运算
- JS数据类型检测
- 关于javascript面向对象之闭包
- 纯js+html和纯css+html制作手风琴效果
- javascript拖拽效果延伸学习
- javascript制作照片墙及制作过程中出现的问题
- javascript如何实现360度全景照片问题汇总