// 序列化函数
function serialize(data) {
// 使用JSON.stringify进行初步序列化
let serialized = JSON.stringify(data, (key, value) => {
// 处理特殊类型,例如Date
if (value instanceof Date) {
return {
__type: 'Date',
value: value.toISOString()
};
}
// 这里可以继续添加其他特殊类型的处理,比如正则表达式等
return value;
});
return serialized;
}
// 反序列化函数
function deserialize(serialized) {
return JSON.parse(serialized, (key, value) => {
if (typeof value === 'object' && '__type' in value) {
// 处理Date类型还原
if (value.__type === 'Date') {
return new Date(value.value);
}
// 处理其他特殊类型还原,按照前面添加的类型继续扩展
}
return value;
});
}
// 示例使用
let complexData = {
name: 'John',
age: 30,
hobbies: ['reading', 'coding'],
birthDate: new Date('1990-01-01'),
nested: {
subValue: 42
}
};
let serializedData = serialize(complexData);
console.log('Serialized:', serializedData);
let deserializedData = deserialize(serializedData);
console.log('Deserialized:', deserializedData);