【问题标题】:Multiple JSON Requests Ruby多个 JSON 请求 Ruby
【发布时间】:2013-05-31 06:10:03
【问题描述】:

我正在使用 rails 和 crunchbase api 来拉取公司的信息,我整晚都在与这个错误作斗争。它成功完成 一个 请求,在构造第二个请求后它崩溃,我收到此错误:

Error/Users/Rich/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/psych.rb:205:in `parse':
(<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)

我可以根据需要发布尽可能多的代码。非常感谢所有帮助,因为我是红宝石新手。

def get_data(company_links)
  while i < company_links.length
    puts "USING URL #{URL}#{company_links[i]}.js?#{API_Key}"
    resp = RestClient.get("#{URL}#{company_links[i]}.js?#{API_Key}")
    arr = Crack::JSON.parse(resp)
    i += 1
  end
end

调用方法

links_array = ["dropbox","twitter"]
get_data(links_array)

找到编辑答案 真的不知道它为什么会起作用,但我并不抱怨它已解决。感谢所有提供帮助的人,我真的很感激:)

def get_data(links_array) links_array.each 做|公司| 提出“使用 URL #{URL}#{company}.js?#{API_Key}” resp = RestClient.get("#{URL}#{company}.js?#{API_Key}") arr = JSON.parse(resp) 放 arr["name"] 结尾 结尾

【问题讨论】:

  • def get_data(...) 是您文件的第一行吗?错误消息表明错误发生在第 1 行第 1 列
  • 是指文件的第一行还是响应?我的第一行是需要'rubygems'

标签: ruby-on-rails ruby json rubygems rest-client


【解决方案1】:

看起来您的问题在于您返回的 JSON,而不是获取它。诊断:

def get_data(company_links)
  company_links.each do |company|
    puts "USING URL #{URL}#{company}.js?#{API_Key}"
    resp = RestClient.get("#{URL}#{company}.js?#{API_Key}")
    puts "RETURNS: #{resp}"
    arr = Crack::JSON.parse(resp)
  end
end

也试试

links_array = ["twitter","dropbox"]
get_data(links_array)

并查看它是否在第一个或第二个请求上失败。

编辑:我打赌你在 JSON 字符串的开头有一些 Crack/Psych 不喜欢的字符,它是一个“控制字符”;)

Edit2:如果打印到控制台的 JSON 有效,请尝试 arr = Crack::JSON.parse(resp.to_s)arr = Crack::JSON.parse(resp.inspect)。我对这里的很多重要细节都很模糊。

【讨论】:

  • 非常感谢我一直在阅读您的建议的帮助,这是一个非常奇怪的错误。它为一家公司打印的 json 完全有效,然后它就死了。编辑 2 产生了一个不同的错误:/Users/Rich/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/psych.rb:205:in `parse': () : 在解析第 1 行第 1 列的引用标量时发现未知转义字符 (Psych::SyntaxError)
  • 在控制台中手动运行每个 get 并将 puts resp 的结果添加到您的问题中。从“这里”诊断太难了。
  • 找到了答案,不知道为什么会这样,但它可以通过将:Crack::JSON.parse(resp) 替换为 JSON.parse(resp)
【解决方案2】:

我不确定为什么会发生这种情况,但您可以考虑使用线程来运行多个请求,而不是使用 while 循环。我个人认为循环请求不是一个好主意。

看看这个例子:

Ruby on Rails Multiple HTTP request at the same time?

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 2011-01-02
    • 1970-01-01
    • 2012-08-08
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多