Я получил эту ошибку и не смог найти разумного ответа на этот вопрос, поэтому решил написать краткое изложение проблемы.
Если вы запустите этот фрагмент в 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
. Любые предложения будут ценны.