ruby on rails-检查name是否==关键字



所以我在这里有一个json,我正在尝试搜索名称

我试图通读整个json,并且只匹配名称。但我不知道该怎么做。

我将下面的json解析为一个名为jsondata 的变量

并在这里创建了这个循环来读取它。

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"}]}

您可以使用String#include?String#index在"name"键下的每个字符串中搜索要查找的针头。Enumerable方法select是一个很好的选择,可以只选择包含您要查找的数据的哈希:

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

这假设您已经将json数据解析为Ruby哈希:

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"}]
jsondata.each do |link|
  if link.name =~ /leo/
    # do something
  end
end

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

使用@Cam定义的jsondata,可以执行以下操作。

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"}

最新更新