我收到此错误,并且找不到任何合理的答案来解决这个问题,所以我想我会写一个问题摘要。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!
这只是罚款和好。如果你不知道一个字节是什么,看到这篇文章的总结和解决方案: What is a JSON octet and why are two required?
解决方案
你传递中的变量是一个空字符串。不要试图在JSON.parse
方法中使用空字符串。
问题
所以,现在我知道了错误的原因,我应该用什么方式来处理呢?我有点厌恶猴子修补JSON库允许nil
值。任何建议将不胜感激。
可能是由于绝对最小有效javascript字符串是''“',这是两个八位字节(而绝对最小对象是'{}'')。可能是编写该编码器/解析器的人不认为'null'也是一个有效的javascript值。 –