首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法错误,意外的输入结束,应为keyword_end

语法错误,意外的输入结束,应为keyword_end
EN

Stack Overflow用户
提问于 2013-09-14 05:54:46
回答 1查看 3.4K关注 0票数 0

我正在尝试编写一个简单的程序来从API调用的结果中解析JSON。ruby是个新手,就是搞不懂这一点。

下面是所有的代码:

代码语言:javascript
复制
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)的输出:

代码语言:javascript
复制
chartbeat.rb:14: syntax error, unexpected end-of-input, expecting keyword_end

程序原封不动地从这里开始,但替换了url:https://gist.github.com/timsavery/1657351

EN

回答 1

Stack Overflow用户

发布于 2013-09-14 06:42:20

看起来你所做的并没有利用任何Net::HTTPs的能力,所以我可能会这样做:

代码语言:javascript
复制
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 ""
end

OpenURI是很多命中URL的代码的基础,也是一个很好的起点。

如果您希望捕获引发的异常,请使用类似以下内容:

代码语言:javascript
复制
begin
  response = open("http://api.chartbeat.com/live/recent/v3/?apikey=eaafffb9a735796b6edd50fd31eaab69&host=enactus.org").read
rescue Exception => e
  puts e.message
  exit
end

它甚至可以简化为:

代码语言:javascript
复制
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

但这可能过于激进了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18795875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档