如何在Javascript中将JSON字符串转换为函数?

Ada*_*ris 7 javascript jquery json

如何将javascript/jquery中的字符串转换为函数?

我正在尝试使用JSON参数列表来初始化函数.但是,其中一个参数是一个函数,我将其存储为字符串,当我尝试使用eval()返回函数时出现错误.

例如,如果我的JSON是:

json = { "one": 700, "two": "function(e){alert(e);}" }
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中:

parameters = eval(json);
$('myDiv').addThisFeature({
 parameter_1: json.one,
 parameter_2: eval(json.two)  // <= generates error
})
Run Code Online (Sandbox Code Playgroud)

use*_*716 7

示例: http ://jsfiddle.net/patrick_dw/vs83H/

var json = '{ "one": 700, "two": "function(e){alert(e);}" }';
var parameters = JSON.parse( json );
eval( 'var func = ' + parameters.two );
func( 'test' ); // alerts "test"
Run Code Online (Sandbox Code Playgroud)

您需要在不支持它的浏览器中加载JSON库.

或者做两个单独的逃避:

示例: http ://jsfiddle.net/patrick_dw/vs83H/1/

var json = '{ "one": 700, "two": "function(e){alert(e);}" }';
eval( 'var parameters = ' + json );
eval( 'var func = ' + parameters.two );
func( 'test' );
Run Code Online (Sandbox Code Playgroud)

我假设你已经意识到了eval的危险性.