我正在尝试编写一个简单的程序来从API调用的结果中解析JSON。ruby是个新手,就是搞不懂这一点。
下面是所有的代码:
require "rubygems"
require "json"
require "net/http"
require "uri"
uri = URI.parse("http://api.chartbeat.com/live/recent/v3/?apikey=eaafffb9a735796b6edd50fd31eaab69&host=enactus.org")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
if response.code == "200"
result = JSON.parse(response.body)
result.each do |doc|
puts doc["id"] #reference properties like this
puts doc # this is the result in object form
puts ""
puts ""
end
else
puts "ERROR!!!"
end下面是运行该程序(chartbeat.rb)的输出:
chartbeat.rb:14: syntax error, unexpected end-of-input, expecting keyword_end程序原封不动地从这里开始,但替换了url:https://gist.github.com/timsavery/1657351
发布于 2013-09-14 06:42:20
看起来你所做的并没有利用任何Net::HTTPs的能力,所以我可能会这样做:
require "rubygems"
require "json"
require "open-uri"
response = open("http://api.chartbeat.com/live/recent/v3/?apikey=eaafffb9a735796b6edd50fd31eaab69&host=enactus.org").read
result = JSON.parse(response)
result.each do |doc|
puts doc["id"] #reference properties like this
puts doc # this is the result in object form
puts ""
puts ""
endOpenURI是很多命中URL的代码的基础,也是一个很好的起点。
如果您希望捕获引发的异常,请使用类似以下内容:
begin
response = open("http://api.chartbeat.com/live/recent/v3/?apikey=eaafffb9a735796b6edd50fd31eaab69&host=enactus.org").read
rescue Exception => e
puts e.message
exit
end它甚至可以简化为:
require "rubygems"
require "json"
require "open-uri"
JSON[
open("http://api.chartbeat.com/live/recent/v3/?apikey=eaafffb9a735796b6edd50fd31eaab69&host=enactus.org").read
].each do |doc|
puts doc["id"] #reference properties like this
puts doc # this is the result in object form
puts ""
puts ""
end但这可能过于激进了。
https://stackoverflow.com/questions/18795875
复制相似问题