Текст JSON должен содержать как минимум два октета

Я получил эту ошибку и не смог найти разумного ответа на этот вопрос, поэтому решил написать краткое изложение проблемы.

Если вы запустите этот фрагмент в irb:

JSON.parse( nil )

Вы увидите следующую ошибку:

TypeError: can't convert nil into String

Я ожидал, что функция вернет nil , а не TypeError . Если вы конвертируете весь ввод с помощью to_s , то вы увидите ошибку октета:

JSON::ParserError: A JSON text must at least contain two octets!

Это нормально и хорошо.Если вы не знаете, что такое октет, прочтите этот пост, чтобы получить краткое изложение и решение: Что такое октет JSON и почему требуются два?

Решение

Переменная, которую вы передаете, является пустой строкой. Не пытайтесь использовать пустую строку в методе JSON.parse .

Вопрос

Итак, теперь я знаю причину ошибки, какой шаблон мне следует использовать для ее обработки? Мне немного неприятно, когда обезьяна исправляет библиотеку JSON, чтобы разрешить значения nil . Любые предложения будут ценны.

63
задан Community 23 May 2017 в 12:25
поделиться