Ste*_*son 34 javascript serialization
我需要序列化和反序列化Javascript对象以将它们存储在DB中.
请注意,这些对象包含函数,因此我无法将它们存储为JSON,因此我无法使用json2.js.
什么是[de]序列化javascript对象的最新技术(当然是在javascript中).
谢谢,斯图尔特
Mat*_*ley 28
一般来说,没有办法(在浏览器中)序列化附加了函数的对象,因为每个函数都引用了它的外部作用域.如果函数引用任何这些变量,则在反序列化时它们将不再存在.
我想要的是使用内置(或json2.js)JSON.stringify和JSON.parse函数与replacer和reviver参数.以下是它如何工作的部分示例:
JSON.stringify(yourObject, function(name, value) {
if (value instanceof LatLng) { // Could also check the name if you want
return 'LatLng(' + value.lat() + ',' + value.lng() + ')';
}
else if (...) {
// Some other type that needs custom serialization
}
else {
return value;
}
});
JSON.parse(jsonString, function(name, value) {
if (/^LatLng\(/.test(value)) { // Checking the name would be safer
var match = /LatLng\(([^,]+),([^,]+)\)/.exec(value);
return new LatLng(match[1], match[2]);
}
else if (...) {
...
}
else {
return value;
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在自定义类型中使用所需的任何序列化格式."LatLng(纬度,经度)"格式只是其中一种方式.您甚至可以返回一个可以本机序列化为JSON的javascript对象.
使用gserializer:
http://www.onegeek.com.au/articles/programming/javascript-serialization.php
谷歌中的代码:
http://code.google.com/p/gserializer/
GSerializer是一个javascript库,用于序列化/反序列化javascript对象与字符串之间的连续性,例如Cookie.与许多其他实现不同,GSerializer还可以序列化函数和非JSON表示法.