正在解析 XML HTTParty 响应
Parsing XML HTTParty response
我正在使用 HTTParty 从 api 获取数据。我设法取回了 XML 响应,看起来 HTTParty 已经将 xml 响应变成了 Ruby.
如何浏览散列并获取我需要的数据?例如,假设我想要 "Name",即“29TH AVENUE STN/ARBUTUS”。
API 键工作正常,因为我收到了回复。
只是不太确定如何浏览并获取我想要的数据,并将其放入我的视图中。
index.html.erb:
<% @courses.each do |course| %>
<%= course %>
<% end %>
HTT方回复:
["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
"Pattern" => [{
"PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
}, "Direction" => "EAST"
}]
}
}]
获取响应的模型
class Checker
include HTTParty
base_uri 'http://api.translink.ca/rttiapi/v1/routes'
default_params apikey: "[my proper api key]"
format :xml
def self.for term
get("", query: {stopNo: term})["Routes"]["Route"]["RouteNo"]
end
end
模型控制器
class TimesController < ApplicationController
def index
@search_term = '51048'
@courses = Checker.for(@search_term)
end
end
假设您有一个回复显示:
resp = ["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
"Pattern" => [{
"PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
}, "Direction" => "EAST"
}]
}
}]
又是一个包含两个元素的数组,第一个是 'Route',最后一个是具有所有属性的散列,要简单地使用名称:
resp.last['Name']
我正在使用 HTTParty 从 api 获取数据。我设法取回了 XML 响应,看起来 HTTParty 已经将 xml 响应变成了 Ruby.
如何浏览散列并获取我需要的数据?例如,假设我想要 "Name",即“29TH AVENUE STN/ARBUTUS”。
API 键工作正常,因为我收到了回复。
只是不太确定如何浏览并获取我想要的数据,并将其放入我的视图中。
index.html.erb:
<% @courses.each do |course| %>
<%= course %>
<% end %>
HTT方回复:
["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
"Pattern" => [{
"PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
}, "Direction" => "EAST"
}]
}
}]
获取响应的模型
class Checker
include HTTParty
base_uri 'http://api.translink.ca/rttiapi/v1/routes'
default_params apikey: "[my proper api key]"
format :xml
def self.for term
get("", query: {stopNo: term})["Routes"]["Route"]["RouteNo"]
end
end
模型控制器
class TimesController < ApplicationController
def index
@search_term = '51048'
@courses = Checker.for(@search_term)
end
end
假设您有一个回复显示:
resp = ["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
"Pattern" => [{
"PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
}, "Direction" => "EAST"
}, {
"PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
"Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
}, "Direction" => "EAST"
}]
}
}]
又是一个包含两个元素的数组,第一个是 'Route',最后一个是具有所有属性的散列,要简单地使用名称:
resp.last['Name']