[英]how to read array of hashes as input.txt file to sort in ruby
這是我保存到 input.txt 文件的哈希數組
arr_hash = [{"Name"=>"Aku","Email"="hello@gmail.com,"place"=>"abc"},
{"Email"=>"xyz@gmail.com.com","place="India","Name"=>"Rocky"}
{"place"=>"India","Email"=>"abc@gmail.com","Name"=>"Rocky"}]
下面是一段代碼,我嘗試從文本文件中讀取哈希數組進行排序(main.rb)
file = File.open("input.txt","r+")
sorted = file.map{|h| h.values_at(:Name, :place, :Email)}.sort
puts sorted
這是生成新文件以顯示輸出的代碼
output_file = File.open("outputfile.txt","w" )
output_file << sorted
output_file.close
當我嘗試讀取 input.txt 文件以對其進行相應排序時,出現以下錯誤
undefined method `values_at' for #<String:0x000055fac2499158> (NoMethodError)
文本文件對我來說似乎不是一個合適的選擇。 相反,你為什么不使用 JSON ?
你可以像這樣定義你的文件:
{
"1": {
"Name": "Aku",
"Email": "hello@gmail.com",
"place": "abc"
},
"2": {
"Email": "xyz@gmail.com.com",
"place": "India",
"Name": "Rocky"
},
"3": {
"place": "India",
"Email": "abc@gmail.com",
"Name": "Rocky"
}
}
像這樣在 Ruby 中導入它:
require 'json'
file = File.read 'input.json'
data = JSON.parse file
data.class
# => Hash
data.first
# => ["1", {"Name"=>"Aku", "Email"=>"hello@gmail.com", "place"=>"abc"}]
data.each_value { |value| puts value['Name'] }
# => Aku
# => Rocky
# => Rocky
將 Hash 轉儲為 JSON 真的很容易:
my_hash = {
"Name"=>"Aku",
"Email"=>"hello@gmail.com",
"place"=>"abc"
}
File.write('output.json', JSON.dump(my_hash))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.