0

我正在尝试使用 Foursquare API 构建一个小应用程序。

require 'rubygems'
require 'rest-client'
require 'json'
require 'foursquare2'
require 'awesome_print'

client = Foursquare2::Client.new(:client_id => 'xxx', :client_secret => 'xxx')

response = client.search_venues(:ll => '36.142064,-86.816086', :query => 'nails')

这很好用,但是我从 API 得到的响应有些莫名其妙!

[
    [0] "groups",
    [1] [
        [0] {
             "type" => "places",
             "name" => "Places",
            "items" => [
                [ 0] {
                            "id" => "4e24ce97fa76c80b5f5adfcc",
                          "name" => "The Nail Spa",
                       "contact" => {
                                 "phone" => "6152975895",
                        "formattedPhone" => "(615) 297-5895"
                    },
                      "location" => {
                            "address" => "2126 Abbot Martin Rd. Suite 102",
                        "crossStreet" => "at Green Hills Mall",
                                "lat" => 36.10713765714286,
                                "lng" => -86.817004,
                           "distance" => 3888,
                         "postalCode" => "37215",
                               "city" => "Nashville",
                              "state" => "TN",
                            "country" => "United States"
                    },
                    "categories" => [
                        [0] {
                                    "id" => "4bf58dd8d48988d10c951735",
                                  "name" => "Cosmetics Shop",
                            "pluralName" => "Cosmetics Shops",
                             "shortName" => "Beauty / Cosmetic",
                                  "icon" => "https://foursquare.com/img/categories/shops/beauty_cosmetic.png",
                               "parents" => [
                                [0] "Shops & Services"
                            ],
                               "primary" => true
                        }
                    ],
                      "verified" => false,
                         "stats" => {
                        "checkinsCount" => 103,
                           "usersCount" => 90,
                             "tipCount" => 5
                    },
                      "specials" => []
                },

以上是响应的第一部分,很多数据回来了。

什么是 Ruby 中提取您想要的 pars 的最佳方式。例如 - 如果我想要返回每个结果的名称?

响应的类是我以前从未见过的 Hashie::Mash?

4

1 回答 1

0

Hashie 给你一些糖来玩 Hashes(见https://github.com/intridea/hashie)。

要获得每个结果的名称,这样的事情应该可以解决问题:

response.groups[0].items.each{|i| puts i.name}
于 2012-05-21T20:04:45.550 回答