json - 编码 JSON 对象时如何避免使用引号

标签 json haskell

我需要创建类似于以下 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/

相关文章:

asp.net - 无效的 JSON 基元

javascript - 如何遍历 JSON 列表并插入到 HTML 元素中?

haskell - 关于并行度和 `do`的问题

haskell - 为什么 MonadReader r (StateT s m) 使用底层 monad 的实例

javascript - 奇怪的问题:jQuery AJAX 成功数据仅解析最后一个 JSON 节点

php - 通过表单向php发送json

haskell - 是否可以在 GHCi 中定义新的 ADT

haskell - 没有 ScopedTypeVariables 的外部边界类型声明

regex - Haskell中用于正则表达式的"Raw"字符串

javascript - 如何在 JavaScript 中将属性值与 JSON 值匹配?