我需要序列化和反序列化 JavaScript 对象以将它们存储在数据库中。
请注意,这些对象包含函数,因此我无法将它们存储为 JSON,因此无法使用 json2.js。
JavaScript 对象(当然是 JavaScript)的[反]序列化的最新技术是什么。
一般来说,(在浏览器中)无法序列化带有附加函数的对象:每个函数都有对其外部作用域的引用,当您反序列化它时,该作用域将不存在,因此对该作用域的序列化引用将无效。
我要做的是使用内置的(或 json2.js)JSON.stringify
and JSON.parse
函数与replacer
and 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;
}
});
您可以在自定义类型中使用任何您想要的序列化格式。 “LatLng(纬度,经度)”格式只是其中一种方法。您甚至可以返回一个可以本机序列化为 JSON 的 JavaScript 对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)