【发布时间】:2016-08-10 19:51:10
【问题描述】:
我想我把自己写在一个角落里。基本上,我有一个哈希数组,就像这样。
my_hashes = [{"colorName"=>"first", "hexValue"=>"#f00"}, {"colorName"=>"green", "hexValue"=>"#0f0"},
{"colorName"=>"blue", "hexValue"=>"#00f"}, {"colorName"=>"cyan", "hexValue"=>"#0ff"},
{"colorName"=>"magenta", "hexValue"=>"#f0f"}, {"colorName"=>"yellow", "hexValue"=>"#ff0"},
{"colorName"=>"black", "hexValue"=>"#000"}]
我需要使用 JSON.parse 最终能够将这些哈希转换为 CSV 格式。唯一的问题是,只要存在“=>”符号,我就无法让 JSON.parse 工作。我试过只做一个常规的 gsub('=>', ':') 但似乎我不能使用它,因为这是一个哈希数组。我尝试了以下方法的变体:
my_hashes.each do |hash|
hash.each do |key, value|
key.gsub!('=>', ':')
value.gsub!('=>', ':')
end
end
我需要这些哈希值保持原样,所以即使我将它们转换为介绍字符串,如果我将它们转换回来,它们仍然可以使用“=>”符号。有什么建议吗?
【问题讨论】:
-
只需使用
my_hashes.to_json将其转换为JSON 字符串。您可能需要先require 'json'。 -
为什么先将哈希转换为 JSON 再转换为 CSV?为什么不直接使用
csvfrom the standard library 转至 CSV? -
这是XY problem。与其转换您需要描述您正在尝试做的事情的哈希值,不如寻找一种更好的方法来完成它。
-
感谢您的建议。我已经找到了解决问题的方法,现在正在重构代码。
标签: json ruby parsing hash gsub