JSON.parse() 方法中里面有函数,转化完成后是字符串问题

要将 JSON 字符串中的函数还原回原来的函数对象,你可以使用 JSON.parse() 方法,并提供一个 reviver 函数来将字符串表示的函数重新转换为函数对象。以下是你可以使用的代码示例:

var obj = { "name":"Runoob", "alexa":function () {return 10000;}, "site":"www.runoob.com"};

// 将函数转换为字符串
obj.alexa = obj.alexa.toString();

// 将对象转换为 JSON 字符串
var myJSON = JSON.stringify(obj);

// 从 JSON 字符串中还原对象
var newObj = JSON.parse(myJSON, function(key, value) {
    // 如果值是字符串,并且看起来像是函数定义,则将其转换为函数对象
    if (typeof value === 'string' && value.indexOf('function') === 0) {
        // 使用 eval 将字符串转换为函数对象,这里有一定的安全风险,请确保 JSON 字符串是可信的
        return eval('(' + value + ')');
    }
    return value;
});

console.log(newObj);

这段代码会输出还原后的对象,其中 alexa 属性的值将会是一个函数对象。但请注意,使用 eval 有一定的安全风险,所以在实际应用中需要确保 JSON 字符串的来源可信。

posted @ 2024-04-12 15:40  黑白棋学弟  阅读(66)  评论(0编辑  收藏  举报