ルビーと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"
}
]
}]
次に、ファイルからjsonをロードしてハッシュに入れ、インターネットからいくつかの情報をフェッチし(この例ではハードコーディングされています)、これらの新しい情報をハッシュに追加し、ハッシュをjsonに変換するrubyスクリプトを作成しました。それをファイルに再度保存します。
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は値( '20120828_234558')ではなくハッシュのキー('day')を取得しているようです。
スクリプトの何が問題になっていますか?どんな助けでも大歓迎です。