如何在编码JSON对象时避免引号

Uri*_*olz 3 json haskell

我需要创建类似以下JSON实体的东西:

{ "foo": function() { *some code* } }

任何常见的JSON库(json,jsonb,aeron等)都能轻松实现吗?我没有找到一种方法告诉库在编码时不引用函数部分.

谢谢,

ps我明白不允许这样使用的原因是强制执行正确的语法,但我愿意冒这个风险.

phi*_*hag 9

这不是JSON实体,而是JavaScript对象.JSON没有函数的概念.

使用JSON编码函数的唯一方法是将其编码为字符串:

{ "foo": "function() { return \"Hello, World\" }" }
Run Code Online (Sandbox Code Playgroud)

如果要在JavaScript中执行该功能,则必须使用eval以下字符串:

var jsonObj = JSON.parse('{ "foo": "function() {return \\"Hello, World\\";}" }');
var jfoo = eval('(' + jsonObj.foo + ')');
alert(jfoo()); // Shows a dialog box "Hello, World"
Run Code Online (Sandbox Code Playgroud)

请注意,这允许JSON的源在您的网站或应用程序的上下文中执行任意JavaScript.因此,您应尽可能传输数据而不是函数,并确保不eval从不受信任的源代码进行编码.