2013-05-31 96 views
0

我使用rails與crunchbase api來拉下公司的信息,我一直在整夜對抗這個錯誤。它完成一個請求成功,構建崩潰的第二請求之後,我收到此錯誤:多個JSON請求紅寶石

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 do |company| 
    puts "USING URL #{URL}#{company}.js?#{API_Key}" 
    resp = RestClient.get("#{URL}#{company}.js?#{API_Key}") 
    arr = JSON.parse(resp) 
    puts arr["name"] 
    end 
end 

+0

是'def get_data(...)'文件的第一行嗎?錯誤消息表明錯誤發生在第1行第1列中 –

+0

這是指文件的第一行還是響應?我的第一行是要求'rubygems' – rich

回答

2

它看起來像你的問題是你要回來,而不是它的抓取的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字符串的最開始喜歡的,這是一個「控制字符」;)

EDIT2:如果JSON打印到控制檯是有效的,請嘗試arr = Crack::JSON.parse(resp.to_s)arr = Crack::JSON.parse(resp.inspect)。我對這裏的很多重要細節很模糊。

+0

真的很感謝我一直在經歷你的建議和一個非常奇怪的錯誤的幫助。它爲一家公司打印的json完全有效,然後死亡。編輯2產生了不同的錯誤:/Users/Rich/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/psych.rb:205:in'parse':():found未知的轉義字符,同時在第1行第1列解析引用的標量(Psych :: SyntaxError) – rich

+0

在控制檯中手動運行每個手動獲取並將'puts resp'的結果添加到您的問題。太難以從「這裏」診斷。 – Narfanator

+0

找到答案,不知道爲什麼這個工作,但它通過替換:Crack :: JSON.parse(resp)只有JSON.parse(resp) – rich