我有一个像这样的json字符串:
json = "{'run': 'function() { console.log('running...'); }'}"
Run Code Online (Sandbox Code Playgroud)
如何在json字符串中运行该函数?
您将不得不使用eval()(doc)函数.很多人对这个功能有很多感受.JSON最适合传输数据,而不是函数(请参阅JSON).功能应该放在页面上的脚本中.您发布的代码中也存在语法错误(函数包含在单引号(')中,console.log的第一个参数也是如此).但...
json = "{\"run\":\"function() { console.log('running...'); }\"}"; //Fixed, thanks
obj = JSON.parse(json);
eval(obj.run); //Logs "running..."
Run Code Online (Sandbox Code Playgroud)
更新:
哦,我错了.Eval似乎不喜欢匿名函数.与修改后的代码,它将解析JSON成与作为一个运行属性的对象String,以值"function() { console.log('running...'); }".但是当你eval(obj.run);,你会得到一个声明意外的SyntaxError(.据推测,这是(在函数()中.
所以,我可以想到两种方法来解决这个问题:
function () {),并评估它.这意味着它会尽快被调用eval.我认为你想要的是能够将它评估为一个匿名函数,它将在你想要时调用.所以,你可以写一个包装函数(你也需要遵循选项1):
function returnEval(str) {
return function () { eval(str); }
}
Run Code Online (Sandbox Code Playgroud)
这将允许您调用它.所以:
obj = JSON.parse(json);
obj.run = returnEval(obj.run);
obj.run(); //Logs "running..."
Run Code Online (Sandbox Code Playgroud)希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
4703 次 |
| 最近记录: |