,这是可能的。
我想输出一个ruby哈希作为js对象,但是对于散布的某些值,我需要它们而没有引号,即JS代码。例如(类似)这个红宝石:
{ 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!"}
请注意,如果您的输入具有嵌套结构,则可能需要对此功能实现递归调用。