- 浏览: 437587 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ubuntu的疯狂:
推荐一份完整的教程:http://blog.ddlisting ...
Emberjs学习 -
ptz19:
请问,如果把合并前的文件,不要dest 目标目录来。如: js ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
楼主,还有个问题,<a href="" ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
感谢楼主,用到了您的代码, 但现在好像有改动 否则会报错:修改 ...
gulp下静态资源的合并、压缩、MD5后缀 -
denverj:
感谢分享~
Emberjs学习
window.JSON 对象,处理JSON对象与字符串之间的转化。
浏览器支持:IE8+, Firefox 3.5+, Safari 4+, Chrome, and Opera 10.5+.
跨浏览器的解决方案,可以引用第三方库json2.js :https://github.com/douglascrockford/JSON-js
JSON.stringify(value[, replacer [, space]]) —— 把数据对象转化为字符串。
注意: 1)默认跳过函数; 2)Date 类型将自动转为字符串。
参数介绍:
value: 被序列号的对象;对象可以自定义 toJSON() 方法,更改序列化结果。
replacer: 对象序列化调用的函数;数字或字符串的数组,指定对象中需要被序列号的属性。
当replacer是一个函数时候,它的返回值将影响对象属性的序列化结果:
1) 返回 undefined ,对象的该属性将被删除;
2)返回一个 Object 对象,该 Object 对象将自动被递归序列化;
注意:
改返回对象不能自定义toJSON方法, 否则将导致浏览器崩溃!!!
space: 数字或字符串,为了可读效果,对序列化的字符串插入N个空白或一个特定字符。
注意:
如果自定义了字符,就没办法重新用parse()解析回对象了。
// 例子1: var obj = { "a": 100, "b": 'jack', "c": "www\"kk\"www", "say": function(){alert("hello")}, "d": [1,2,3], "e": {"e1":"hwow"}, "f": true, "g": new Date() }; var str = JSON.stringify(obj); // -- output -- {"a":100,"b":"jack","c":"www\"kk\"www","d":[1,2,3],"e":{"e1":"hwow"}, "f":true,"g":"2012-08-21T02:33:22.969"} // 例子2: function censor(key, value) { switch(key){ case "foundation": return {"Company":value,"Modifier": "Shawn"}; case "model": return undefined; case "week" : return 30; // DONT'T DO THIS。IE下报堆栈溢出错误,Firefox直接就崩溃了。 // case "transport": return {"transport":value,"toJSON": function(){return "UNKNOW";}}; default: return value; } } var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; var jsonString = JSON.stringify(foo, censor,"~"); console.log(jsonString); // --- output ---- { ~"foundation": { ~~"Company": "Mozilla", ~~"Modifier": "Shawn" ~}, ~"week": 30, ~"transport": "car", ~"month": 7 }
JSON.parse(value[, replacer]) —— 将字符串化的对象还原。
参数介绍:
value:被还原的对象字符串;
replacer: 函数,对象还原调用。它的返回值将影响对象结果。如果返回 undefined ,对象的该属性将被删除;
var book = { "name" : "程序设计", "pubDate": new Date(2010,1,1), "releaseDate" : new Date(2009,10,10), "price" : 199 } var jsonText = JSON.stringify(book); console.log(jsonText); // {"name":"程序设计","pubDate":"2010-01-31T16:00:00.000Z", "releaseDate":"2009-11-09T16:00:00.000Z","price":199} var bookCopy = JSON.parse(jsonText,function(key, value){ if(key === "pubDate"){ return new Date(value); }else if(key === "price"){ return undefined; } return value; }); console.log(typeof bookCopy.price); // undefined 已经被删除了 console.log(typeof bookCopy.pubDate); // object Date类型 console.log(typeof bookCopy.releaseDate); // string 默认仍然是字符串
注意:使用stringify 方法将对象串行化,则应该使用parse 方法还原。
这在本地存储的读取时候,容易犯错,出现bug:
比如:
var aStr = "hello"; var result = JSON.stringify(aStr); console.log(result); // "hello" 注意:这里前后多了2个双引号 console.log(result === aStr); // false var aStr2 = JSON.parse(result); //使用parse()方法还原 console.log(aStr === aStr2); // true
参考资料:
https://developer.mozilla.org/en-US/docs/Using_native_JSON
《JavaScript高级程序设计3》
发表评论
-
webpack简单打包PC网站前端资源
2016-02-23 14:30 1619:arrow: 1. 纯前端的打包输出,比较有局限 2 ... -
grunt构建基于seajs的网站实现
2015-06-16 16:49 1086Gruntfile.js module.exports ... -
js平滑滚动回到顶部
2015-06-10 11:42 3941优先使用 requestAnimationFrame实现。 实 ... -
fis-amd 的使用与修改
2015-05-26 16:14 3903https://github.com/fex-team/fis ... -
scrollMagic 视差与滚动动画GSAP
2015-05-19 18:14 4219scrollMagic(https://github.com/ ... -
skrollr-视差滚动动画插件
2015-05-19 14:18 1688skrollr ( https://github.com/Pr ... -
stellar插件的使用
2015-05-18 17:30 1657<!DOCTYPE html> < ... -
icon font VS svg font
2015-05-14 15:21 1151关于字体图标和SVG图标,CSS TRICK网站有较好的说明。 ... -
gulp下静态资源的合并、压缩、MD5后缀
2015-05-05 15:48 22500var gulp = require('gulp'); ... -
DOMContentLoaded VS onload VS onreadystatechange
2015-04-30 14:50 69311. DOMContentLoaded 在页面html、scr ... -
简单的css3全屏滚动
2015-04-27 16:41 1394<!DOCTYPE html> <ht ... -
jquery插件treetable 的使用
2015-04-20 16:12 11801插件的文档写得不是很好,为了能弄出异步加载的功能,小折腾了一番 ... -
sublime 侧边栏字体大小修改
2015-04-16 10:46 3766【转载自:http://jekhy.com ... -
移动端的“点透”问题
2015-04-15 14:13 1598移动端的“点透”问题,这篇博文有较好的说明: http://w ... -
scheme缺少,ie的bug
2015-04-01 17:34 496在页面上定位一个资源(JS/CSS/image),通常的url ... -
大整数相加
2015-03-26 22:18 870function repeatStr(ch, n){ ... -
getBoundingClientRect 跨浏览器实现
2015-03-18 18:30 1050<head> <script ... -
window.name 跨域
2015-03-18 17:29 840window.name跨域的基础是:iframe页面在其url ... -
window.name 跨域
2015-03-18 17:27 1window.name跨域的基础是:iframe页面在其ur ... -
HTML History API
2015-03-13 18:05 1077// 替换当前浏览器history的最后一项记录。 hi ...
相关推荐
序列化 定义 指将 JavaScript 值转化为 JSON 字符串的过程。 JSON.stringify() 能够将 JavaScript 值转换成 JSON 字符串。JSON.stringify() 生成的字符串可以用 JSON.parse() 再还原成 JavaScript 值。 参数的含义 1...
JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了,就是利用 JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象。至于这行代码为什么能实现深拷贝,以及它...
Akka.NET将命令(或消息)写入数据库,它必须将消息对象序列化为字节数组,然后从该字节数组中还原对象。 该序列化由序列化程序执行,可以通过akka配置工具进行配置。 默认序列化程序使用Json作为媒体,并使用著名...
通信相关 ... 访问数据库相关 ... 序列化帮助类,Xml序列化,Json序列化,SoapFormatter序列化,BinaryFormatter序列化 27.压缩解压缩 SharpZip 28.验证码 YZMHelper Captcha 验证码类,一个很个性的验证码类
27.序列化 Serialize SerializeHelper 28.压缩解压缩 SharpZip 29.验证码 YZMHelper Captcha 验证码类,一个很个性的验证码类 30.页面辅助类 HTMLHelper UploadEventArgs JavaScriptPlus PageHelper 31.邮件 ...
作者追踪 ... 该思想在于将文本的每个部分归因于它出现的最早的修订版本。 例如,如果一个修订版本包含... 对象本身可以使用基于json的方法进行序列化(和反序列化)。 为避免整个过去历史的表示量过大,我们从对象中删除
序列化帮助类,Xml序列化,Json序列化,SoapFormatter序列化,BinaryFormatter序列化 27.压缩解压缩 SharpZip 28.验证码 YZMHelper Captcha 验证码类,一个很个性的验证码类 29.页面辅助类 HTMLHelper ...
数据文件:数据类的基于文件的ORM 数据文件是Python的双向序列化库,用于使用类型注释将对象同步到文件系统。 它支持多种文件格式,并在可能的情况下往返保留格式和注释。 对象更改自动保存到磁盘,并且仅包含还原每...
11、什么是java序列化,如何实现java序列化? 59 12、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 60 13、java中有几种类型的流?JDK为每种类型的流...
|--内容提供者之短信的序列化对象读写 |--内容提供者之短信的获取与写入 |--内容提供者之联系人读写与批量操作 |--内容提供者之获取通话记录 |--内容提供者的定义 |--写入联系人信息 |--利用FinalHttp实现多线程断点...
使用可以序列化为JSON的基于图形的简单对象模型为域数据建模。 遍历图形,包括使用简单API的关系。 使用完全相同的API在客户端(浏览器)或服务器(Node.js)上处理和查询数据。 特征 Data.Graph (各种链接数据...
hide() 和 show() 都可以设置两个可选参数:speed 和 callback。 语法: $(selector).hide(speed,callback) $(selector).show(speed,callback) speed 参数规定显示或隐藏的速度。可以设置这些值:"slow", "fast", ...
第 1 章 结构化查询语言 DM_SQL 简介 ....................................................................1 1.1 DM_SQL 语言的特点 ............................................................................