2016-07-05 6 views
0

ので、私は全体のJSONを読みしようとしている、とだけ名前に一致しています名前チェック==名かのキーワード

を検索しようとしてここにJSONとイムを持っています。しかし、私はそれについてどうやって行くのか分かりません。

私は

jsondataと呼ばれる変数に以下のJSONを解析され、それを読むためにここにこのループを作成しました。

jsondata.each do |links| 
    puts links 
end 

しかし、どうやって名前フィールドを読み、それを文字列に一致させることができますか?レオという言葉を探していると私は言います。

{「ファイル」:[{"name":"github.jpeg","size":10852,"deleteType":"DELETE","deleteUrl":"http://gifs.meow.me/github.jpeg","url":"http://gifs.meow.me/github.jpeg"},{"name":"leo.jpg","size":51678,"deleteType":"DELETE","deleteUrl":"http://gifs.meow.me/leo.jpg","url":"http://gifs.meow.me/leo.jpg"},{"name":"leo2.jpg","size":41407,"deleteType":"DELETE","deleteUrl":"http://gifs.meow.me/leo2.jpg","url":"http://gifs.meow.me/leo2.jpg"}]}

答えて

1

あなたはString#include?String#indexを使用して探している針のための「名前」のキーの下にそれぞれの文字列を検索することができます。

jsondata = {"files"=>[ 
    {"name"=>"github.jpeg", 
    "size"=>10852, 
    "deleteType"=>"DELETE", 
    "deleteUrl"=>"http=>//gifs.meow.me/github.jpeg", 
    "url"=>"http=>//gifs.meow.me/github.jpeg"}, 
    {"name"=>"leo.jpg", 
    "size"=>51678, 
    "deleteType"=>"DELETE", 
    "deleteUrl"=>"http=>//gifs.meow.me/leo.jpg", 
    "url"=>"http=>//gifs.meow.me/leo.jpg"}, 
    {"name"=>"leo2.jpg", 
    "size"=>41407, 
    "deleteType"=>"DELETE", 
    "deleteUrl"=>"http=>//gifs.meow.me/leo2.jpg", 
    "url"=>"http=>//gifs.meow.me/leo2.jpg"} 
]} 

jsondata["files"].select{|h| h["name"].include? "leo" } 
# => [{"name"=>"leo.jpg", "size"=>51678, "deleteType"=>"DELETE", "deleteUrl"=>"http=>//gifs.meow.me/leo.jpg", "url"=>"http=>//gifs.meow.me/leo.jpg"}, {"name"=>"leo2.jpg", "size"=>41407, "deleteType"=>"DELETE", "deleteUrl"=>"http=>//gifs.meow.me/leo2.jpg", "url"=>"http=>//gifs.meow.me/leo2.jpg"}] 
+0

レオを含むものが見つかった場合、どうすればそのURLを引き出すことができますか? – mystycs

+0

関連するすべてのURLが必要な場合は、結果の 'hash'に対して' map'を使うことができます: 'jsondata [" files "]。select {| h | h ["name"]を含む? "leo"} .map {| h | h ["url"]} ' – Cam

1

jsondata["files"].select{|h| h["name"].include? "leo" } 

これは、あなたはRubyのハッシュにJSONデータを解析されている前提:Enumerable方法はselectあなたが探しているデータが含まれている唯一のハッシュを選択するための良い選択だろう

jsondata.each do |link| 
    if link.name =~ /leo/ 
    # do something 
    end 
end 

又は定義bとjsondataを使用

jsondata.each do |link| 
    if link.name.include? 'leo' 
    # do something 
    end 
end 
1

y @カム、あなたは次のことができます。

jsondata["files"].each_with_object({}) { |g,h| 
    h[g["name"]]=g["url"] if g["name"] =~ /\Aleo/ } 
    #=> {"leo.jpg"=>"http=>//gifs.meow.me/leo.jpg", 
    # "leo2.jpg"=>"http=>//gifs.meow.me/leo2.jpg"} 
関連する問題