【问题标题】:Easy way to access hashes from within arrays with ruby使用 ruby​​ 从数组中访问哈希的简单方法
【发布时间】:2011-06-13 08:05:54
【问题描述】:

我正在使用 ruby​​ 从 Google 地理编码 API 获取一些地址信息。我返回 JSON 并将其解析为一个变量,该变量是一个包含哈希的数组。

在我解析完 json 后,它看起来像这样

{"status"=>"OK",
 "results"=>
  [{"address_components"=>
     [{"long_name"=>"XXX", "types"=>["street_number"], "short_name"=>"XXX"},
      {"long_name"=>"St Georges Terrace",
       "types"=>["route"],
       "short_name"=>"St Georges Terrace"},
      {"long_name"=>"Perth",
       "types"=>["locality", "political"],
       "short_name"=>"Perth"},
      {"long_name"=>"Western Australia",
       "types"=>["administrative_area_level_1", "political"],
       "short_name"=>"WA"},
      {"long_name"=>"Australia",
       "types"=>["country", "political"],
       "short_name"=>"AU"},
      {"long_name"=>"6000", "types"=>["postal_code"], "short_name"=>"6000"}],
    "types"=>["street_address"],
"geometry"=>
 {"location_type"=>"ROOFTOP",
  "viewport"=>
   {"northeast"=>{"lng"=>115.86768092068, "lat"=>-31.9540383793198},
    "southwest"=>{"lng"=>115.86138567932, "lat"=>-31.9603336206802}},
  "location"=>{"lng"=>115.8645333, "lat"=>-31.957186}},
"formatted_address"=>"XXX St Georges Terrace, Perth WA 6000, Australia"}]}

我的红宝石是这样的

require 'rubygems'
require 'json'
require 'open-uri'
require 'pp'

@url = "http://maps.googleapis.com/maps/api/geocode/json?address=PERTH+XXX+St+Georges+Terrace,+Western+Australia&sensor=false"

uri = URI.parse(@url)
json = uri.open.read

parsed_json = JSON.parse(json)

pp parsed_json

hashjes 和数组的混合让我在 Ruby 中感到困惑。我希望将信息提取到一个哈希中,看起来像这样

result = { "address_line_one" => "XXX St Georges Terrace", "address_line_two" => "Perth", "state" => "Western Austalia", "postal_code" => "6000" }

谢谢

【问题讨论】:

    标签: ruby json


    【解决方案1】:
    j = parsed_json
    a = j['results'][0]['address_components'].map { |e| e['long_name'] }
    
    p(
      { 'address_line_one' => a[0..1].join(' '),
        'address_line_two' => a[2],
        'state'            => a[3],
        'postal_code'      => a[5] }
    )
    

    【讨论】:

      猜你喜欢
      • 2012-05-14
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2014-04-09
      • 2021-04-17
      • 2013-03-22
      相关资源
      最近更新 更多