我在試着解決我遇到的一個問題,即使用我最新的項目之一。這裏是senario:將哈希寫入CSV文件,然後將值讀回以形成哈希值
我打電話給GoToWebinar API來獲取即將到來的網絡研討會。一切工作正常和網絡研討會在哈希的就是這樣的形式獲取:
[
{
"webinarKey":5303085652037254656,
"subject":"Test+Webinar+One",
"description":"Test+Webinar+One+Description",
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
},
{
"webinarKey":9068582024170238208,
"name":"Test+Webinar+Two",
"description":"Test Webinar Two Description",
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
}
]
我創建了我們要每天跑一次填充CSV本哈希,然後提交rake任務在控制器操作中讀取CSV文件以填充視圖。
這裏是我的代碼填充CSV文件:
g = GoToWebinar::API.new()
@all_webinars = g.get_upcoming_webinars
CSV.open("#{Rails.root.to_s}/public/upcoming_webinars.csv", "wb") do |csv|
@all_webinars.each do |webinar|
webinar.to_a.each {|elem| csv << elem}
end
end
我需要想辦法來保存的散列在這樣一個被保存在CSV文件的形式接收信息的某些幫助保存順序的方式,也是一種從CSV文件中讀取信息的方式,它以相同的方式在控制器操作中填充哈希值。
CSV和哈希試圖完成兩件不同的事情,所以它們不會真正地來回翻譯。例如,散列中「times」的值就是它自己和另一個散列的數組;這意味着您要將每個項目放入CSV(一層深度數據結構)至少要深入三層。有沒有理由不能將散列保存爲JSON文件並將其讀回?否則,你需要將散列分開並將值映射到CSV中的特定列,這將非常脆弱。 – farski
首先,你談論的散列是一個JSON字符串,而不是一個Ruby散列。將字符串保存爲JSON文件中的JSON字符串,或者將其轉換爲Ruby哈希和marshal對象,然後將結果字符串存儲到文件中。在閱讀文件時,您需要「解除」導致Ruby哈希的字符串。 [Ruby編組](http://www.ruby-doc.org/core-1.9.3/Marshal.html) – Kashyap