在Ruby on Rails中解析JSON的最佳方法是什么?

时间:2011-11-15 21:10:05

标签: ruby-on-rails json

我有以下json内容,我从不同的位置拉出来:

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中的数据?有没有比我采取的方法更好的方法呢?

1 个答案:

答案 0 :(得分:3)

要进行调试,只需执行此类操作即可。

您的第一个循环是针对数组的,因此只需要块中的单个变量:

<ul>
  <% @json.each do |event| %>
    <% event.each do |e, d| %>
      <li><%=h e.inspect %> / <%=h d.inspect %></li>
    <% end %>
  <% end %>
</ul>

很难写出能够完全正常工作的东西,因为我们只能看到第一个事件。但是我会查看[/ {字符,看看你是否期望散列或数组。