首页 > 解决方案 > Ruby on Rails 在没有 : 和 => 值的情况下将 Hash 写入文件

问题描述

我在 Ruby on Rails 应用程序中有一个哈希,需要以以下格式写入文件 -

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

但我能够以以下格式将其打印在文件中 -

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

有没有办法在将哈希写入文件时删除:符号并替换=>为?:

谢谢!

标签: ruby-on-railsrubyruby-on-rails-4

解决方案


正如我在评论中所说,您必须手动执行此操作。用于hash.map获取键/值对并相应地格式化它们,使用逗号连接,然后在结果周围添加花括号。我#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"}

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


推荐阅读