我有一个包含json格式信息(新闻源)的对象,如下所示:
def index
@news_feed = FeedDetail.find(:all)
@to_return = "<h3>The RSS Feed</h3>"
@news_feed.items.each_with_index do |item, i|
to_return += "#{i+1}.#{item.title}<br/>"
end
render :text => @to_return
end
我想只显示那个json数组中的特定值,比如标题描述等。当我直接渲染@news_feed对象时,它会给出这个
[{
"feed_detail":{
"author":null,
"category":[],
"comments":null,
"converter":null,
"description":"SUNY Levin Institute, Empire State Development Facilitate Collaboration to Drive Economic Opportunities Across New York State",
"do_validate":false,
"enclosure":null,
"guid":null,
"link":"http://www.suny.edu/sunynews/News.cfm?filname=2012-06-20-LevinConferenceRelease.htm",
"parent":null,
"pubDate":"2012-06-20T23:53:00+05:30",
"source":null,
"title":"SUNY Levin Institute, Empire State Development Facilitate Collaboration to Drive Economic Opportunities Across New York State"
}
}]
当迭代json对象时,它给出了 - 未定义的方法项。 我想要的只是从该数组中获取特定值。我也使用了JSON.parse()方法,但它说cant将数组转换为字符串。
我怎么会这样做,任何想法?
答案 0 :(得分:1)
你需要先解析json:
@news_feed = JSON.parse(FeedDetail.find(:all))
然后你可以像数组和哈希一样访问它:
@news_feed.each_with_index do |item, i|
to_return += "#{i+1} #{item["feed_detail"]["title"]}<br/>"
end
在ruby中,您可以使用[]
而非.
类似的javascript访问子元素。您的示例json没有名为items的元素,因此我删除了该部分。 each_with_index
会将每条记录放入item
变量中,然后您必须在获取详细信息之前引用"feed_detail"
密钥。