найти ошибки JSON с рубином - PullRequest
2 голосов
/ 19 июня 2009

Я использую ruby ​​gems json_pure, и когда я получаю сообщения об ошибках, я не могу определить номер строки, где происходит ошибка я ожидал найти валидатор, написанный на ruby, который сообщит мне номер строки. Каков наилучший подход ruby ​​для быстрого поиска ошибок json?

спасибо!

Ответы [ 4 ]

3 голосов
/ 16 января 2010

Вы можете попробовать 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 голос
/ 14 января 2010

Возможно, вам будет проще использовать http://www.jsonlint.com/ для проверки правильности JSON - он выделит любые проблемные строки.

0 голосов
/ 04 апреля 2016

Это старый вопрос, но он все еще актуален в текущем Ruby.

JSON-анализатор по умолчанию в Ruby не сообщает номер строки и / или номер столбца, когда произошла ошибка анализа. Просто ошибка "разбора" и все.

Вы можете изменить парсер на Oj и использовать с MultiJson gem. Oj это здорово, это очень быстро, и он покажет строку и даже номер столбца, которые произошли ошибки синтаксического анализа! Отлично.

Пример ошибки для однострочного очень большого JSON (170 КБ +), Oj выдаст столбец 102421.

.../adapters/oj.rb:15:in `load': unexpected character at line 1, column 102421 [parse.c:666] (MultiJson::ParseError)
0 голосов
/ 19 июня 2009

JSON должен передаваться по сети в виде строки, поэтому на самом деле есть только одна строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...