使用 Ruby 和 ERB('=>' 表示法)在 JSON 文件中呈现哈希

Rendering a hash inside a JSON file with Ruby and ERB ('=>' notation)

我正在尝试使用 ERB 呈现 JSON 模板,不幸的是,由于“=>”散列符号,它不像使用 Python 那样简单。 这是一个简短的例子:

  require 'erb'

  h = Hash.new
  h["first"] = "First"
  h["second"] = "Second"

  template = ERB.new <<-EOF
  {
    "key": "value",
    "foo": 1,
    "Hash": <%= h %>,
    "bar": 2
  }
  EOF

  puts template.result(binding)

此代码将产生此输出:

  {
    "key": "value",
    "foo": 1,
    "Hash": {"first"=>"First", "second"=>"Second"},
    "bar": 2
  }

将“=>”符号转换为冒号将生成有效的 json 文件。 有没有一种我不知道的使用 Ruby/ERB 的方法(除了分别打印键、值和字符)?或者应该 运行 替换我生成的 json 文件?

我觉得我缺少明显的解决方案

您是否在寻找类似的东西:

require 'erb'
require 'json'

h = Hash.new
h["first"] = "First"
h["second"] = "Second"

template = ERB.new <<-EOF
  {
    "key": "value",
    "foo": 1,
    "Hash": <%= h.to_json %>,
    "bar": 2
  }
EOF

puts template.result(binding)

输出

[arup@Ruby]$ ruby a.rb
  {
    "key": "value",
    "foo": 1,
    "Hash": {"first":"First","second":"Second"},
    "bar": 2
  }
[arup@Ruby]$