我正在使用ruby gems json_pure,当我得到解析错误时,我无法确定发生错误的行号。我期待找到一个用红宝石写的验证器,它会告诉我行号。什么是快速找到json错误的最好的ruby方法?
谢谢!
答案 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应该作为字符串通过网络发送,所以实际上只有一行。