我在试着解决我遇到的一个问题,即使用我最新的项目之一。这里是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