0

次のように、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() メソッドも使用しましたが、配列を文字列に変換できないと言われています。

どうすればこれを行うことができますか?

4

1 に答える 1

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"に入れるため、詳細に到達する前にキーを参照する必要があります。

于 2012-06-21T13:29:37.060 に答える