如何将Ruby哈希转换为具有不带引号的值的Javascript对象?
我想输出一个Ruby散列作为JS对象,但对于散列的一些值,我需要它们不带引号,即JS代码。例如(类似于)这个Ruby:如何将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
{ 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。如果需要直接调用该函数,可以使用JSeval()
。请小心并注意此处的警告: