[英]How do you convert a Ruby hash to a Javascript object with unquoted values?
I want to output a Ruby hash as a JS object but for some values of the hash I need them without quotes, ie JS code. 我想输出一个Ruby哈希作为JS对象,但是对于哈希的某些值,我需要它们不带引号,即JS代码。 For example (something like) this Ruby:
例如(像这样的)Ruby:
{ foo: proc { 'someJavascriptFn()' } }.to_json
Would output this JS: 将输出此JS:
{ foo: someJavascriptFn() }
Is something like this possible without patching proc
or hash
? 如果不修补
proc
或hash
是否有可能发生这种情况?
Yes, this is possible, but you'll need to build JSON yourself: 是的,这是可能的,但是您需要自己构建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!"}
Please note, that you might need to implement recursive call to this function if your input has nested structures. 请注意,如果您的输入具有嵌套结构,则可能需要对该函数进行递归调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.