我对 ruby 和 json 有疑问。我有一个 json 文件,其中包含从互联网上抓取的信息。对于以下问题,我将使用硬编码文件,其语法如下:
[{
"day": "20120827_234558",
"entries": [
{
"rank": "3",
"club": "SuS Schalke 1896 e.V.",
"votes": "126"
},
{
"rank": "4",
"club": "TuS Hamborn-Neumühl 07 e.V.",
"votes": "120"
}
]
},{
"day": "20120827_234700",
"entries": [
{
"rank": "1",
"club": "TLV Germania 1901 Essen-Überruhr",
"votes": "210"
},
{
"rank": "2",
"club": "Rumelner TV",
"votes": "141"
}
]
}]
然后我编写了一个 ruby 脚本,它从文件中加载 json 并将其放入哈希中,从 Internet 获取一些信息(以及在此示例中硬编码),将这些新信息添加到哈希中,将哈希转换为 json 和再次将其存储在文件中。
require 'rubygems'
require 'open-uri'
require 'json'
fname = 'ranking.json'
json = JSON.load(File.open(fname))
json.each do |ranking|
puts 'entry:'
puts ranking['day']
end
puts "\n";
new_data = Array.new
new_data = { "day" => "20120828_234558", "entries" => "sgankhask" }
json << new_data.to_json
json.each do |ranking|
puts 'entry:'
puts ranking['day']
end
所以这只是简单地将 json 格式的数据附加到已经存在的 json 中。
但是如果我执行这个脚本,我会得到以下输出:
entry:
20120827_234558
entry:
20120827_234700
entry:
20120827_234558
entry:
20120827_234700
entry:
day
我对最后一行感到困惑。我假设最后一行是entry: 20120828_234558
. 看起来,Ruby 使用哈希的键('day')而不是值('20120828_234558')?
我的脚本有什么问题?任何帮助表示赞赏。