json ファイル (4 つのキーと値のペアを含む "items" と呼ばれる単一の配列で構成される) を OpenStruct に解析して、データをオブジェクトであるかのように処理できるようにしました。Web ページに各オブジェクトをランダムに表示したいと思います。
# read json file and parse into OpenStruct
def read_json(url)
json_file = File.read(url)
json_obj = JSON.parse(json_file, object_class: OpenStruct)
return json_obj
end
# sample array
def random_display(json)
out = json.items.sample
return out
end
私のjsonは基本的に次のようなものです:
{
"items": [
{
"foo": "bar",
"foo": "bar"
},
{
"foo": "bar",
"foo": "bar"
},
}
そして最後に、私のシナトラ ルートでは、次のようになります。
get '/' do
@data = read_json("public/data.json")
@random = random_display(@data)
erb :index
end
私のerbページでは、結果として<%= @random %>
単純なものを使用して取得しています。#
なんで?つまり、特定のキーの値を表示するように指示していないためであることは承知しています。しかし、どうすればそれを回避できますか?
もう 1 つのこと - 私がやろうとしていること (2 つのランダムなオプションのうち、より高価なものを選択するよう求める小さなゲームを作成すること) のやり方が根本的に間違っているように感じます。