programing

함수를 json으로 전달하고 실행

iphone6s 2023. 3. 13. 20:14
반응형

함수를 json으로 전달하고 실행

함수를 json 문자열로 전달(JSON.stringify 변환)하여 다른 함수로 전송하고 json을 해석하여 json에 있던 함수를 실행할 수 있는 방법이 있습니까?jquery와 javascript를 사용하고 있습니다.

네, 가능합니다.그것을 할 수 있는 방법은 아주 많다.

또한 http://javascript.about.com/library/bleval.htm에서 지적한 바와 같이 "악" 평가 기능을 사용할 필요가 없습니다(왜 피해야 하는지 야후글을 사용하세요). http://javascript.about.com/library/bleval.htm

var tmpFunc = new Function(codeToRun);
tmpFunc(); 

어느 단계에서든 JSON이었는지는 무관해야 한다.

예, 함수를 문자열로 변환할 수 있습니다.toString()방법.

함수를 문자열로 변환하고 함수로 되돌리는 예를 다음에 나타냅니다.

var myfunc = function () {
    alert('It works!');
}

var as_string = myfunc.toString();

as_string = as_string.replace('It works', 'It really works');

var as_func = eval('(' + as_string + ')');

as_func();

여기 작업 가 있습니다.

기본적으로 이런 일은 조심해야 합니다.기존의 javascript 함수를 문자열로 변환하여 평가하면 함수 재클라레이션 문제가 발생할 수 있습니다.단순히 서버에서 함수 문자열을 가져와서 실행하고 싶을 경우 jsfiddle에서 했던 것처럼 실행할 수 있습니다.

자바스크립트

var myFunc = "function test() {alert('test');}";

$(document).ready(function() {
    var data = new Object();
    data.func = myFunc;
    var jsonVal = $.toJSON(data);
    var newObj = $.evalJSON(jsonVal);
    eval(newObj.func);
    test();
});​

JSONfn 플러그인을 확인합니다.

http://www.eslinstructor.net/jsonfn/

당신이 원하는 대로 할 수 있어요

- Vadim

JSONfn의 포크를 만들었습니다.이 포크는 오브젝트와 그 프로토타입을 문자열화하고 해석할 수 있습니다.내 기본 테스트에서는 잘 작동했다.

https://github.com/cgarciae/jsonfn

JSON 파일의 함수로 작업할 때 JavaScript call() 함수를 사용하면 도움이 됩니다.

var returnData = theJsonData.theFunction.call();
console.log(returnData); // prints any return data

그게 들르는 사람에게 도움이 됐으면 좋겠어!

안 돼, 이러면 안 돼함수를 JSON 직렬화할 수 없습니다.오브젝트를 JSON으로 변환하는 대신 JSON.stringify를 호출하지 않고 다른 함수에 직접 전달할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3946958/pass-function-in-json-and-execute

반응형