我有一些JSON,看起来像这样。我将其存储并读取到一个对象@items中。
[
{
{
"id": "A",
"description": "a_description"
},
{
"id": "B",
"description": "b_description"
}
},
{
{
"id": "A",
"description": "a_description"
},
{
"id": "B",
"description": "b_description"
}
}
] 我的目标是显示一个包含两列的表,一列标记为A,另一列标记为B,其中每一行都表示"a_description“和"b_description”。我不知道该怎么做。
发布于 2012-07-25 03:28:22
哈,散列的旧数组和数组的散列问题。
要解决您的“无序”问题,您首先必须转换
{
"id": "A",
"description": "foo"
},
{
"id": "B",
"description": "bar"
}进入{"A" : "foo", "B" : "bar" }。
@new_items = @items.map do |item|
output = {}
item.each do |hash|
output.merge!(hash["id"] => hash["description"])
end
end然后@new_items变为(故意乱序显示,因为散列元素没有排序)
[
{
"A": "a1_description",
"B": "b1_description"
},
{
"B": "b2_description",
"A": "a2_description"
}
]从这里开始,每一行都是一个哈希值,因此您可以根据所在的列取消引用所需的值。
@new_items.each do |item|
puts "#{item['A']} is paired with #{item['B']}"
end当然,如果您不想使用.keys对"A“和"B”进行硬编码,则可以动态检索键
发布于 2012-07-25 01:54:32
像这样的东西也许
<tr><th>A</th><th>B</th></tr>
<% @items.each do |item| %>
<tr><td><%=item[0].description%></td><td><%=item[1].description%></td></tr>
<% end %>https://stackoverflow.com/questions/11636451
复制相似问题