2011-04-16 48 views
0

我正在使用允許使用Ruby代碼中的Stackoverflow API工作的Rubyoverflow gem。而且我注意到,有時我得到錯誤信息:在破解中的錯誤?

Invalid JSON string 

我試圖分析代碼,並發現,當#1的答案有非ASCII字符錯誤發生。

Rubyoverflow使用HTTParty gem,HTTParty gem使用Crack gem來解析JSON文件。

module Crack 
    class JSON 
    def self.parse(json) 
     json = json.delete!("^\u{0000}-\u{007F}") # here is my fix 
     YAML.load(unescape(convert_json_to_yaml(json))) 
    rescue ArgumentError => e 
     raise ParseError, "Invalid JSON string" 
    end 

我已經添加了一行代碼來從JSON中刪除所有非ASCII字符,並且錯誤已修復。

現在我想知道誰是我需要報告有關此錯誤的人。

  1. 是否可以包含非ASCII字符到JSON文件?
  2. 是否可以包含非ascii字符到YAML文檔?
  3. 如果standarts允許在YAML類中包含非ascii字符到JSON和YAML - >錯誤。這樣對嗎?誰是這個類的作者,哪個是修復這個bug的最好方法?
+0

快速搜索顯示[作者可以在github上](https://github.com/eadz/rubyoverflow)。如果它真的是一個錯誤,那麼你會在這裏提交錯誤報告。我不認爲這是事實,但我認爲問題在於你不瞭解規範,或者如何處理Unicode。我希望看到修改後的問題,因爲「我想知道誰是我需要報告有關此錯誤的人」,這一點對於SO來說並不是一個好問題。 – 2011-04-17 00:31:40

+0

這個例子中沒有我的代碼。 Stackoverflow發佈JSON,Rubyoverflow與這個JSON協同工作,HTTParty獲取這個JSON,Crack將JSON轉換爲YAML並且YAML-lib加載這個YAML。問題是誰是錯誤的共同之處。你爲什麼決定在Rubyoverflow中的原因?你確定Stackoverflow給出了正確的JSON嗎?你確定所有其他的寶石和圖書館都能正常工作嗎? – demas 2011-04-17 01:23:25

+0

@ The Tin Man:確保你鏈接到正確的github項目;)。這是原始項目的一個分支,沒有額外的提交 – 2011-04-21 19:12:11

回答

0

JSON和YAML文檔應根據HTTP標頭中給出的字符集進行解碼,然後對結果文檔進行適當的分析。 JSON和YAML do都有一種用ASCII表示非ASCII字符的方法,但它們都沒有強制使用它們而不是使用完整編碼。