2009-06-18 30 views
2

我使用ruby gems json_pure,當我得到解析錯誤時,我無法確定發生錯誤的行號。我期待找到一個用紅寶石書寫的驗證器,它會告訴我行號。什麼是最好的ruby方法來快速找到json錯誤?用ruby發現json錯誤

謝謝!

回答

-4

JSON應該作爲字符串通過網絡發送,所以實際上只有一行。

+0

我用它作爲一個應用程序而不是XML的配置。它的長度約爲950行,當我得到解析錯誤時,我必須通過視覺識別錯誤或開始分治法。我希望有一些能夠幫助我更快找到錯誤的東西 – Kramer 2009-06-18 20:37:13

+1

如果它是一個配置文件,我會使用yml而不是json。 json主要用於在javascript和服務器之間傳遞信息 – ErsatzRyan 2009-06-18 20:50:18

1

您可能會發現使用http://www.jsonlint.com/更容易檢查JSON是否有效 - 它會突出顯示任何有問題的行。

3

你可以嘗試Kwalify:http://www.kuwata-lab.com/kwalify/ruby/users-guide.html

這不只是一個JSON/YAML驗證器,但你給它一個架構,它驗證對抗。

您可以使用它來驗證您的配置文件是否正確(根據您的「正確」定義)以及正確的JSON(或YAML),它會告訴您錯誤發生的行號,以及一些錯誤的上下文也是如此。

我從他們的文檔中的一個樣本和錯誤信息刪除一個「]」它給了我是

ERROR: document12a.json:10:1 [/favorite] flow sequence is not closed by ']'. 

它也做數據綁定類的生成,如果你想要的。這似乎是一個非常好的配置管理/驗證工具。

0

這是個老問題,但它仍然是當前Ruby中的一個問題。

Ruby中的默認JSON解析器不會告訴您發生解析錯誤的行號和/或列號。只是「解析」錯誤,就是這樣。

您可以將解析器更改爲Oj並與MultiJson寶石一起使用。 012jOj很棒,速度非常快,它會顯示解析錯誤發生的行甚至列號!大。對於一個行非常大的JSON(170KB +)

樣品誤差,Oj的會給柱102421.

.../adapters/oj.rb:15:in `load': unexpected character at line 1, column 102421 [parse.c:666] (MultiJson::ParseError)