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 字符串的来源可信。