如何将Ruby Hash转换为具有无引用值的JavaScript对象



我想输出一个ruby哈希作为js对象,但是对于散布的某些值,我需要它们而没有引号,即JS代码。例如(类似)这个红宝石:

{ foo: proc { 'someJavascriptFn()' } }.to_json

将输出此JS:

{ foo: someJavascriptFn() }

如果不修补prochash

,这是可能的。

是的,这是可能的,但是您需要自己构建JSON:

hash = {
  foo: proc { 'someJavascriptFn()' },
  bar: 42,
  baz: "Hello, world!"
}
content = hash.each_with_object([]) do |(k, v), acc|
  acc << ("#{k}: " << (Proc === v ? v.() : v.inspect))
end.join(",n")
#⇒ "foo: someJavascriptFn(),nbar: 42,nbaz: "Hello, world!""
puts "{#{content}}"
#⇒ {foo: someJavascriptFn(),
#   bar: 42,
#   baz: "Hello, world!"}

请注意,如果您的输入具有嵌套结构,则可能需要对此功能实现递归调用。

最新更新