WebjxCom提示:串行化即将变量转换成字节流的过程。
在JavaScript中串行化为JSON—使用json2.js
JavaScript中没有直接串行化对象的内置方法,当然你可以自己写一个,不过我还是强烈推荐你在这里偷个小懒,使用现成的组件,JSON的官方网站提供了对JavaScript对象实现JSON串行化的代码库—json2.js,你可以从这里获得它。
获得完毕json2.js文件后,你可以打开这个文件,在文件的前部分包含了相当大量的注释信息,如果你的英文足够好,那么你可以省略我这一节,参考该文件的注释就可以了,如果作为程序员,你已经看够了大片的字母,想看看我的汉字+字母,那你可以向下继续了。
简单的翻译下这个注释:
可参考
该文件创建了一个包含两个方法的全局对象JSON,它的方法分别是:
代码: JSON.stringify(value, whitelist)
value 任意的JavaScript值,一般是一个对象或者数组whitelist 一个可选的数组参数,用于判定对象值如何被串行化
这个方法通过一个JavaScript值来生成JSON文本。在进行串行化时,根据可选的参数whitelist,有三种可能:
如果某个对象有toJSON方法,那么则调用该方法,toJSON方法的返回值将被串行化。
否则,如果可选参数whitelist是一个数组,那么数组中的元素将被用来选择对象进行串行化时的的成员。
否则,如果没有使用whitelist参数,则对象的所有成员将被串行化。
如果值没有JSON的表现形式,例如undefined或者函数,则其不会被串行化。在对象中,这样的值会被忽略,而在数组中将会被null替换。
JSON.stringify(undefined)会返回undefined。日期将会被串行化为被引用的ISO日期。
例:
代码:
var text = JSON.stringify(['e', {pluribus: 'unum'}]);
//text is '["e",{"pluribus":"unum"}]'
JSON.parse(text, filter)
可选的filter参数是一个可过滤和转换结果的函数、它接受每个键和值,它的返回值用来替换源值。如果它返回所接收的值,那么结果不会被改变。如果他返回undefined,则该成员会被删除。
例:
代码:
//解析文本,如果某个键包含字符串“date”,则将其值转换为日期
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
});
代码: var myE = eval('["e",{"pluribus":"unum"}]');
来获得对象myE。