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

时间:2015-06-11 20:01:02

标签: ruby json hash erb

我试图使用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
  }

转换&#39; =&gt;&#39;冒号到冒号将导致有效的json文件。 有没有办法使用我不知道的Ruby / ERB(除了分别打印键,值和字符)?或者应该在我生成的json文件上运行替换?

我觉得我错过了明显的解决方案

1 个答案:

答案 0 :(得分:1)

您正在寻找类似的东西:

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]$