我已经将一个 json 文件(由一个名为“items”的包含 4 个键值对的单个数组组成)解析为一个 OpenStruct,以便我可以将我的数据视为对象。我现在想在网页上随机显示每个对象。
# 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"
},
}
最后在我的 Sinatra 路线中,我得到了:
get '/' do
@data = read_json("public/data.json")
@random = random_display(@data)
erb :index
end
在我的 erb 页面中,我正在使用<%= @random %>
并得到一个简单#
的结果。为什么?我的意思是,我知道这是因为我没有告诉它显示任何一个特定键的值。但是我该如何解决呢?
另一件事-我觉得我正在尝试做的事情的方式(即创建一个小游戏,要求您从两个随机选项中选择更昂贵的一个)-从根本上是错误的。