Ruby Rails 将哈希写入文件,不带 : 和 => 值

Ruby on Rails write Hash to file without : and => values

我在 Rails 应用程序的 Ruby 中有一个散列,需要按以下格式写入文件 -

{emp_id:15, emp_name:"Test", emp_sal:1800, emp_currency:"USD"}

但我可以按以下格式将其打印在文件中 -

{:emp_id=>15, :emp_name=>"Test", :emp_sal=>1800, :emp_currency=>"USD"}

有没有办法在将散列写入文件时删除符号的 : 并将 => 替换为 :

谢谢!

正如我在评论中所说,您必须手动执行此操作。使用 hash.map 得到 key/value 对并相应地格式化它们,使用逗号连接,然后在结果周围添加大括号。我使用 #to_json 作为向字符串而不是整数添加引号的快捷方式。

hash = {emp_id:15, emp_name:"Test", emp_sal:1800, emp_currency:"USD"}

require 'json'
result = '{' + hash.map { |k, v| "#{k}:#{v.to_json}" }.join(', ') + '}'

puts result
# => {emp_id:15, emp_name:"Test", emp_sal:1800, emp_currency:"USD"}

请注意,这仅适用于单个级别。如果有嵌套,则需要递归函数。