Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Ruby哈希转换为具有不带引号的值的Javascript对象?_Javascript_Ruby - Fatal编程技术网

如何将Ruby哈希转换为具有不带引号的值的Javascript对象?

如何将Ruby哈希转换为具有不带引号的值的Javascript对象?,javascript,ruby,Javascript,Ruby,我想输出一个Ruby散列作为JS对象,但对于散列的一些值,我需要它们不带引号,即JS代码。例如(类似于)这个Ruby: { foo: proc { 'someJavascriptFn()' } }.to_json 将输出此JS: { foo: someJavascriptFn() } 在不修补proc或hash的情况下,这样做是否可能?是的,这是可能的,但您需要自己构建JSON: hash = { foo: proc { 'someJavascriptFn()' }, bar: 42

我想输出一个Ruby散列作为JS对象,但对于散列的一些值,我需要它们不带引号,即JS代码。例如(类似于)这个Ruby:

{ foo: proc { 'someJavascriptFn()' } }.to_json
将输出此JS:

{ foo: someJavascriptFn() }

在不修补
proc
hash
的情况下,这样做是否可能?

是的,这是可能的,但您需要自己构建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!"}
hash={
foo:proc{'someJavascriptFn()'},
酒吧:42,
巴兹:“你好,世界!”
}
content=hash。每个_与_对象([])do |(k,v),acc|

acc“…作为JS对象(或JSON)…不,不是JSON。该输出是无效的JSON。已修复并删除JSON。如果需要直接调用该函数,可以使用JS
eval()
。请小心并注意此处的警告: