我需要创建类似于以下 JSON 实体的内容:
{
"foo": function() { *一些代码* }
}
任何常见的 JSON 库(json、jsonb、aeron 等)都可以轻松实现吗? 我没有找到方法告诉库在编码时不要引用 function 部分。
谢谢,
附言我理解不允许这样使用的原因是为了强制执行正确的语法,但我愿意在这里冒险。
最佳答案
那不是 JSON 实体,而是 JavaScript 对象。 JSON没有函数的概念。
将函数编码为 JSON 的唯一方法确实是将其编码为字符串:
{ "foo": "function() { return \"Hello, World\" }" }
当您想在 JavaScript 中执行该函数时,您必须 eval
字符串:
var jsonObj = JSON.parse('{ "foo": "function() {return \\"Hello, World\\";}" }');
var jfoo = eval('(' + jsonObj.foo + ')');
alert(jfoo()); // Shows a dialog box "Hello, World"
请注意,这允许 JSON 源在您的网站或应用程序的上下文中执行任意 JavaScript。因此,您应该尽可能传输数据而不是函数,并确保不要eval
来自不受信任的来源的代码。
关于json - 编码 JSON 对象时如何避免使用引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318542/