MST
星途 面试题库

面试题:JavaScript类型检测与转换在复杂数据结构序列化中的深度应用

假设有一个复杂的数据结构,其中包含对象、数组、不同类型的基本数据等。要求编写一个函数,能够将该数据结构序列化为字符串,并且在反序列化时能够根据正确的类型还原数据。在这个过程中,需要详细处理JavaScript的类型检测与类型转换,以确保数据的准确性。请写出完整的代码实现及必要的注释。
29.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
// 序列化函数
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);