Как я могу получить значение ключа => из этого хеша с четырьмя квадратами? - PullRequest
2 голосов
/ 03 сентября 2010

Вот как это выглядит:

{
  "groups" => [
    { "venues" => [
      { "city"     => "Madrid",
        "address"  => "Camino de Perales, s/n",
        "name"     => "Caja Mágica",
        "stats"    => {"herenow"=>"0"},
        "geolong"  => -3.6894333,
        "primarycategory" => {
          "iconurl"      => "http://foursquare.com/img/categories/arts_entertainment/stadium.png",
          "fullpathname" => "Arts & Entertainment:Stadium",
          "nodename"     => "Stadium",
          "id"           => 78989 },
        "geolat"   => 40.375045,
        "id"       => 2492239,
        "distance" => 0,
        "state"    => "Spain" }],
      "type"   => "Matching Places"}]
}

Большой и безобразный ... Я просто хочу вытащить идентификатор.Как бы я поступил так?

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

h = {"groups" => .........}

Два идентификатора:

h["groups"][0]["venues"][0]["primarycategory"]["id"]
h["groups"][0]["venues"][0]["id"]
0 голосов
/ 03 сентября 2010

Если хеш хранит один идентификатор: (при условии, что значение хранится в переменной с именем hash)

hash["groups"][0]["venues"][0]["primarycategory"]["id"] rescue nil

Если хеш хранит несколько идентификаторов, то:

ids = Array(hash["groups"]).map do |g|
  Array(g["venues"]).map do |v|
    v["primarycategory"]["id"] rescue nil
  end.compact
end.flatten

ids содержит массив идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...