如何从JSON文件调用JavaScript函数?能否在JSON中编写函数?
关于在JSON中执行JavaScript函数的问题
首先,JSON本身是纯数据格式,不支持直接嵌入或执行JavaScript函数。你贴的写法完全不符合JSON语法规范,会导致JSON解析器直接报错——因为JSON的结构只能是键值对,值只能是字符串、数字、布尔值、数组、对象或null,根本不能包含可执行的代码语句。
如果确实需要在和JSON相关的流程里执行函数,有几种可行的替代方案:
把函数代码以字符串形式存在JSON中:将函数的源码写成字符串,放在JSON的某个字段里,之后在JavaScript中读取这个字符串,用
eval()或者new Function()来执行。比如:{ "func": "function exJsFunction() { console.log('执行函数'); }; exJsFunction();" }在JS中读取后执行的代码:
const jsonData = JSON.parse(jsonString); eval(jsonData.func);注意:
eval()存在严重安全风险,如果JSON的来源不可信,绝对不能用这种方式。在JSON中存函数标识,JS里映射执行:更安全的方式是在JSON里存一个函数名称或标识,然后在JavaScript代码里预先定义好对应的函数,读取JSON后根据标识调用对应的函数。比如:
{ "funcName": "exJsFunction" }JS中的处理代码:
// 预先定义好函数 function exJsFunction() { console.log('执行预设函数'); } const jsonData = JSON.parse(jsonString); // 根据标识调用对应的函数 if (typeof window[jsonData.funcName] === 'function') { window[jsonData.funcName](); }这种方式避免了执行未知代码,安全性和可维护性都更高。
使用非标准的JSON扩展格式:有些库支持带函数的JSON变体(比如JSON5允许一些宽松语法,但仍不直接支持可执行函数),不过这类扩展不具备通用性,只能在特定环境下使用,不推荐用于跨平台或标准场景。
总结:别想着在JSON里直接写可执行函数,要么用字符串存源码(谨慎使用),要么用标识映射预设函数,后者是更可靠的方案。
内容的提问来源于stack exchange,提问作者Raziel Zohar
相关产品推荐
相关产品推荐

