Я получил эту ошибку, и я не мог найти разумного ответа на этот вопрос, поэтому я подумал, что напишу резюме проблемы.
Если вы запустите этот фрагмент в irb:
JSON.parse( nil )
Вы увидите следующую ошибку:
TypeError: can't convert nil into String
Я ожидал возвращения функции nil
, а не a TypeError
. Если вы преобразуете все входные данные с помощью to_s
, вы увидите ошибку октета:
JSON::ParserError: A JSON text must at least contain two octets!
Это просто отлично и хорошо. Если вы не знаете, что такое октет, прочитайте этот пост для сводки и решения: Что такое октет JSON и почему требуется два?
Решение
Переменная, которую вы передаете, представляет собой пустую строку. Не пытайтесь использовать пустую строку в методе JSON.parse
.
Вопрос
Итак, теперь я знаю причину ошибки, какой шаблон я должен использовать для этого? Я немного ненавижу, чтобы обезьяна заплатила библиотеку JSON, чтобы разрешить значения nil
. Любые предложения были бы с благодарностью.