Как уже предложил Юзеф, вы можете использовать eval()
.
Но, пройдя через Google, вы увидите, что использование этой функции НЕ рекомендуется:
- https://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/
- Когда используется JavaScripteval () не зло?
- https://javascriptweblog.wordpress.com/2010/04/19/how-evil-is-eval/
- Почему использование функции eval в JavaScript - плохая идея?
Как предлагает этот блог (http://2ality.com/2014/01/eval.html) Я бы порекомендовал вам использовать это:
let json = {"foo":"bar","baz":"function(){console.log('I am back working as a function!');}"};
let func = new Function("console.log('I am back working as a function!');");
func();
Если у вас нет возможности изменить свой JSON, вы можете просто использовать str.replace()
.
Имейте в виду, что произвольный код может быть выполнен!Я бы настоятельно рекомендовал бы вам сделать, например, что-н.как это вместо того, чтобы просто отвечать с помощью функции.Делая следующее, вы могли бы создать своего рода белый список.Таким образом, независимо от того, был ли обработан http-ответ, злоумышленник может выполнять только предварительно определенные функции javascript.
function func1() {
console.log('I am back working as a function!');
}
function func2() {
console.log('another code block');
}
let json = {"foo":"bar","baz":"1"};
switch(json.baz) {
case "1": func1();break;
case "2": func2();break;
default: console.error("Invalid response");
}
Надеюсь, это поможет.