用ruby找到json错误

时间:2009-06-18 20:18:39

标签: ruby json validation

我正在使用ruby gems json_pure,当我得到解析错误时,我无法确定发生错误的行号。我期待找到一个用红宝石写的验证器,它会告诉我行号。什么是快速找到json错误的最好的ruby方法?

谢谢!

4 个答案:

答案 0 :(得分: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 ']'.

如果需要,它还可以生成数据绑定类。它似乎是一个非常好的配置管理/验证工具。

答案 1 :(得分:1)

您可能会发现使用http://www.jsonlint.com/检查JSON是否有效更容易 - 它会突出显示任何有问题的行。

答案 2 :(得分:0)

这是一个古老的问题,但它仍然是当前Ruby的一个问题。

Ruby中的默认JSON解析器不会告诉您发生解析错误的行号和/或列号。只是'解析'错误就是这样。

您可以将解析器更改为Oj并与MultiJson gem一起使用。 Oj很棒,它非常快,它会显示解析错误发生的行甚至列号!大。

单行非常大的JSON(170KB +)的示例错误,Oj将给出列102421。

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

答案 3 :(得分:-4)

JSON应该作为字符串通过网络发送,所以实际上只有一行。