Ich glaube, ich habe mich in eine Ecke geschrieben. Grundsätzlich habe ich eine Reihe von Hashes, so.Mit gsub ersetzen "=>" durch ":" in einem Array von Hashes
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"}]
Ich muss JSON.parse verwenden, um schließlich diese Hashes in CSV-Format zu transformieren. Das einzige Problem ist, dass ich JSON.parse nicht arbeiten kann, solange das "=>" Symbol vorhanden ist. Ich habe versucht, nur eine reguläre gsub ('=>', ':'), aber es scheint, dass ich es nicht verwenden kann, da dies ein Array von Hashes ist. Ich habe Variationen der folgenden Methode versucht:
my_hashes.each do |hash|
hash.each do |key, value|
key.gsub!('=>', ':')
value.gsub!('=>', ':')
end
end
Ich brauche diese Hash-Werte intakt zu bleiben, so auch wenn ich sie Intro Strings verwandeln, wenn ich sie zurückzuverwandeln sie werden immer noch die ‚=>‘ Symbol verfügbar. Irgendein Rat?
Verwenden Sie einfach 'my_hashes.to_json' es in eine JSON-String zu verwandeln . Sie müssen möglicherweise zuerst "json" anfordern. –
Warum den Hash in JSON und dann CSV konvertieren? Warum nicht direkt CSV mit ['csv' aus der Standardbibliothek] (http://ruby-doc.org/stdlib-2.3.1/libdoc/csv/rdoc/index.html)? –
Dies ist ein [XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Anstatt die Hashes zu konvertieren, müssen Sie beschreiben, was Sie tun möchten, und dann einen besseren Weg finden, dies zu erreichen. –