我有以下json内容,我从不同的位置拉出来:
[
{
"global_event":{
"ending_at":"2011-11-07T02:00:00Z",
"short_url":"http://bit.ly/reAhRw",
"created_at":"2011-10-04T14:25:41Z",
"event_responses":[
],
"addresses":{
"location":{
"city":"blah",
"latitude":30.205288,
"zipcode":"343434",
"street":"blah",
"longitude":-95.475289,
"state":"TX"
}
},
"body":"blahblahblah",
"euid":"2f489d0c82d167f1c16aba5d3b4c29ade6f1d52a",
"title":"Fusion",
"updated_at":"2011-10-04T14:26:57Z",
"event_roles":[
],
"user":{
"long_name":"Fusion Single",
"nickname":""
},
"event_items":[
],
"starting_at":"2011-11-07T00:00:00Z"
}
}
]
def events
@json = ActiveSupport::JSON.decode(open('jsonfeed').read)
end
<ul>
<% @json.each do |event, data| %>
<% event.each do |e, d| %>
<li><%= e[:short_url] #doesn't work '%></li>
<li><%= e['short_url'] #doesn't work '%></li>
<% end %>
<% end %>
</ul>
有没有人知道我怎么能够正确访问这个json中的数据?有没有比我采取的方法更好的方法呢?
答案 0 :(得分:3)
要进行调试,只需执行此类操作即可。
您的第一个循环是针对数组的,因此只需要块中的单个变量:
<ul>
<% @json.each do |event| %>
<% event.each do |e, d| %>
<li><%=h e.inspect %> / <%=h d.inspect %></li>
<% end %>
<% end %>
</ul>
很难写出能够完全正常工作的东西,因为我们只能看到第一个事件。但是我会查看[/ {字符,看看你是否期望散列或数组。