gpt4 book ai didi

javascript - 如何序列化和反序列化 JavaScript 对象?

转载 作者:IT王子 更新时间:2023-10-29 03:14:48 26 4
gpt4 key购买 nike

我需要序列化和反序列化 JavaScript 对象以将它们存储在数据库中。

请注意,这些对象包含函数,所以我无法将它们存储为 JSON,因此我无法使用 json2.js。

JavaScript 对象(当然是 JavaScript)的[反]序列化的最新技术是什么。

最佳答案

通常,(在浏览器中)无法序列化附加函数的对象:每个函数都有对其外部作用域的引用,反序列化时该作用域将不存在,因此序列化对该作用域的引用将无效。

我要做的是将内置(或 json2.js)JSON.stringifyJSON.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;
}
});

您可以在自定义类型中使用您想要的任何序列化格式。 “LatLng(latitude,longitude)”格式只是其中一种方式。您甚至可以返回一个可以在本地序列化为 JSON 的 JavaScript 对象。

关于javascript - 如何序列化和反序列化 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com