Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中迭代嵌套哈希_Ruby_Json_Hash - Fatal编程技术网

在Ruby中迭代嵌套哈希

在Ruby中迭代嵌套哈希,ruby,json,hash,Ruby,Json,Hash,我有一个json文件: { "public_holidays": [ { "date": "2013/1/1", "name": "New Years Day" }, { "date": "2013/1/21", "name": "Luther King Day" }, { "date": "2013/5/27", "name": "Memorial Day" } ] } 我的目标是尝试捕获此文件中的所有日期。我可以在一个特定的索引上得到日期,但不是一次得到所有的日期。以下是我所拥有的: @

我有一个json文件:

{
"public_holidays": [
{
"date": "2013/1/1",
"name": "New Years Day" 
},
{
"date": "2013/1/21",
"name": "Luther King Day"
},
{
"date": "2013/5/27",
"name": "Memorial Day"
}
]
}
我的目标是尝试捕获此文件中的所有日期。我可以在一个特定的索引上得到日期,但不是一次得到所有的日期。以下是我所拥有的:

@file = File.read('public_holidays.json')

def json_file
  holiday_dates = JSON.parse(@file)
  holiday_dates.each do |key, value|
    puts value[0]['date']
  end
end
结果是2013年1月1日,但我需要所有日期,而不仅仅是一个


有什么想法吗?

您的代码将只获取
“public\u holidays”
数组中的第一个元素

试着这样做:

holiday_dates = JSON.parse(@file)
dates = holiday_dates['public_holidays'].map { |x| x['date'] }

迭代公共假日。在这个特定的例子中,你可以忘记它是JSON,只需使用正则表达式从字符串中提取日期:
@file.scan(/\d{4}\/\d{1,2}\/\d{1,2}/)#=>[“2013/1/1”、“2013/1/21”、“2013/5/27”]
。我不是在提倡这一点;我只是想指出,你的JSON示例是无效的。请把它修好,这样我们就可以知道它的结构是什么了。这正是我需要的,谢谢你!我将在6分钟内接受(仍有时间限制…)