JSON解析与序列化
来源:互联网 发布:酷家乐衣柜设计软件 编辑:程序博客网 时间:2024/05/22 09:03
简介
1.JSON:JavaScript Object Notation 对象表示法
2.JSON目前是JavaScript中读写结构化数据最好的方式
3.JSON是一种数据格式,并不是一种编程语言
语法
简单值
1.最简单的JSON数据形式就是简单值,比如5,“Hello World!”
2.JSON字符串必须使用双引号
对象
1.与JavaScript的对象字面量的区别:
(1)没有声明对象
(2)没有末尾的分号
(3)属性名要加双引号
例如:
{"name":"LiNan","age":29}
{"name":"LiNan","age":29,"school":{ "location":"North" }}
数组
[23,26,"hello world"]
解析与序列化
JSON对象
1.stringify():把JavaScript对象序列化为JSON字符串
2.parse():把JSON字符串解析为原生JavaScript值
序列化
注意:
(1)序列化JavaScript对象时,所有函数和原型成员被忽略
(2)值为undefined的任何属性被跳过
(3)最终值为有效的JSON数据类型的实例属性
简单序列化
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011 }; var jsonText = JSON.stringify(book); alert(jsonText.toString());
结果
序列化选项
JSON.stringify()除了要序列化的JavaScript对象外,可以另外接收两个参数,第一个是过滤器,以不同形式序列化JavaScript对象。第二个是选项,表示是否在JSON字符串中保留缩进
1.过滤结果
(1)数组形式
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011 }; var jsonText = JSON.stringify(book,["title","edition"]); alert(jsonText.toString());
结果
(2)函数形式
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011 }; var jsonText = JSON.stringify(book,function (key,value) { switch (key){ case "authors": return value.join(","); case "year": return 1000; case "edition": return undefined; default: return value; } }); alert(jsonText.toString());//一定要提供default值,保证其他值能够正常出现在结果中
结果
2.字符串缩进
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011 }; var jsonText = JSON.stringify(book,null,4);//每个级别缩进4个空格 alert(jsonText.toString());
结果
3.toJSON()
自定义序列化JavaScript对象
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011, toJSON:function () { return this.title; } }; var jsonText = JSON.stringify(book,null,4); alert(jsonText.toString());
结果
4.序列化顺序
(1)如果toJSON()存在并且返回有效值,则调用该方法,否则返回对象本身
(2)如果提供第二个参数,应用这个函数过滤器。传入值为第(1)步返回的值
(3)对第(2)步返回的值进行序列化
(4)如果提供第三个参数,执行相应的格式化
解析
简单解析
var book = { title:"aaa", authors:["xiaoming"], edition:3, year:2011, }; var jsonText = JSON.stringify(book); var bookCopy = JSON.parse(jsonText); for(var key in bookCopy){ console.log(key.toString()+":"+bookCopy[key]); }
结果
解析选项
var book = { title:"aaa", authors:["xiaoming"], 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; } }); for(var key in bookCopy){ console.log(key.toString()+":"+bookCopy[key]); } console.log(bookCopy.releaseDate.getFullYear());
结果
总结
(1)JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量
(2)JSON.stringify()和JSON.parse()分别用来将对象序列化为JSON字符串和将JSON数据解析为JavaScript对象
(3)原生JSON目前得到很多浏览器的支持
参考
《JavaScript高级程序设计(第3版)》
- JSON解析与序列化
- JSON解析与序列化
- JSON解析与序列化
- JSON--解析与序列化
- 浅谈Json解析与序列化
- JSON的解析与序列化
- JSON数据格式的解析与序列化
- plist解析和JSON序列化与反序列化(JSON解析),XML解析
- json知识点总结(解析与序列化)
- Unity序列化之XML,JSON--------合成与解析
- Unity序列化之XML,JSON--------合成与解析
- [乐意黎转载]json的解析与序列化
- JavaScript中JSON的解析与序列化
- 序列化与json
- C# 解析json。json 序列化
- json与pickle序列化
- json与序列化pickling
- 序列化JSON格式数据的解析
- Flutter进阶—点击、拖动和其他手势
- android studio安装 ButterKnife 8.0以上版本 空指针异常
- SAP 笔记
- keil设置生产预处理文件
- iOS 中捕获程序崩溃日志
- JSON解析与序列化
- “无路之门”,一款VR恐怖冒险游戏
- BZOJ 2178 圆的面积并
- ORA-28002 & PASSWORD_LIFE_TIME & PASSWORD_GRACE_TIME
- 如何删除控件
- 04-Eclipse导入项目--facet版本问题:Project facet Java version 1.8 is not supported
- 11g oracle 用户密码过期问题
- 解决stm8会卡在串口中断的问题
- 稳健回归(Robustness regression)