私はルビーnoobyのビットですが、何が配列に入れ子になっているハッシュに見えますか?Ruby Sinatraハッシュが配列内にネストされています
私は、次の実行する場合:
widgets = Sinatra::Application.settings.history
widgets.each do |key, value|
puts key
puts value
end
私は次のような結果を得る:しかし
sales31
data: {"text":"Moeslein Nate","dataImg":"/vinD.jpg","id":"sales31","updatedAt":1511232577}
を。私は、キーを使用して値だけを抽出しようとすると、私はエラーと会ったよ:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[:data]
end
メットエラー TypeError - no implicit conversion of Symbol into Integer
それは、ネストされたハッシュの配列だったと信じて私を導い
と、私が試した:ちょうどキーを印刷し
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0]
end
を再び sales30
sales31
と私がしようとすると、ネストされたデータを抽出する場合:Type Error
へ戻る
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0][:data]
end
と今回のキーのちょうど最初の文字を:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0][0]
end
誰かが最高に精巧でした/私がKEYを使って特定の値を抽出できるようにこのデータを解析するための最も実現可能な方法:
widgets[sales31][text]
それは実際のテキストを印刷する場所になど
:
Moeslein Nate
はお時間をいただき、ありがとうございます!
私はあなたを助けることができると思っていますが、結果がどうなるべきか正確に言うことができますか?ところで、 'each'イテレータは、ブロックに1つの引数が与えられたときに、ハッシュに関して違った働きをします(この場合、' [、、] '配列または2つの引数になります) –
ありがとう、はい、そういう要素に動的にアクセスできるようになっています: ハッシュ[キー] [データ:] [テキスト:]そして返されたテキスト部分: "Moeslein Nate" ハッシュ[キー] [data:] [dataImg:]は "/vinD.jpg"を返すべきです データの下にネストされた値を取得したいと思いますが、ロジックを使用してキーを使用してキー値が一致するようにします! – Shwtm3
あなたのルビーバージョンに基づいているか、または 'activesupport'を依存関係として' transform_keys! 'を使うことができます。したがって、すべてのキーを同じタイプ(例えばシンボル)に正規化することができます – marmeladze