我正在寻找一种 Javascript 对象的序列化方法,该对象包含其他几个不同类的对象,带有函数参数。
这是一个简单的测试用例:
// Paper class:
function Paper(name) {
this.name = name;
}
Paper.prototype = {
string: function() { return "Paper:"+this.name; }
};
// Book class:
function Book(name) {
this.name = name;
}
Book.prototype = {
string: function() { return "Book:"+this.name; }
};
// Library class:
function Library(name) {
this.items = [];
}
Library.prototype = {
add: function(item) { this.items.push(item); },
string: function () {
var titles = this.items.map(function(item) { return item.string(); });
return titles.join(",");
},
};
///// Define a library:
var lib = new Library();
lib.add(new Paper("MyPaper"));
lib.add(new Book("MyBook"));
assert(lib.string() == "Paper:MyPaper,Book:MyBook");
///// Serialize, de-serialize and compare:
// var libString = serialize(lib);
// var newLib = deserialize(libString);
// assert(newLib.string() == "Paper:MyPaper,Book:MyBook");
注意:反序列化的主要用途(至少在我的情况下)是将复杂对象移动到远程计算机。例如,我想在我的计算机上构建一个大库,然后对其进行序列化,放入一个文件,将文件发送到另一台计算机,在那里对其进行反序列化,并拥有完全相同的库。