如何从哈希中提取值

时间:2020-04-09 07:38:44

标签: ruby hashmap

我有一个解析的JSON文件,其中包含一个哈希:

{
  "user1" : {
    "about_you" : "jjhj",
    "age" : 18,
    "email" : 18
   },
  "user2" : {
    "about_you" : "jjhj",
    "age" : 18,
    "email" : 18
   },
  "user3" : {
    "about_you" : "jjhj",
    "age" : 18,
    "email" : 18
   }
}

我正在尝试循环获取所有电子邮件值,并将它们写入CSV文件。

此刻,我正在尝试阅读电子邮件,并尝试了一些变体,但这是我得到的最接近的变体,但它不读取值,仅显示空白。

data_hash = JSON.parse(File.read('user.json'))

data_hash.keys.each do |user|
  puts user['email']
end

2 个答案:

答案 0 :(得分:1)

keys方法returns an array of the key names;它不会返回值。

给出以下输入:

json = '{"user1":{"about_you":"jjhj","age":18,"email":18},"user2":{"about_you":"jjhj","age":18,"email":18},"user3":{"about_you":"jjhj","age":18,"email":18}}'
data_hash = JSON.parse(json)

尝试仅遍历哈希的键和值:

data_hash.each { |k,v| puts v['email'] }

或者,如果您愿意:

data_hash.each do |k,v|
  puts v['email']
end

每个返回:

18
18
18

答案 1 :(得分:1)

如果您只需要电子邮件数据,则可以使用map

data_hash = JSON.parse(File.read('user.json'))
data_hash.values.map{|x| x[:email]}
相关问题