我正在尝试分析Twitter上的tweet,其中一个我想包括的内容是位置。不幸的是,有些值为零,我一直得到错误
undefined method `[]' for nil:NilClass (NoMethodError)
我只想运行一个检查,看看值是否为零,但我不能得到任何工作。
如果为零,则输入如下所示
tweet = {"metadata"=> {"geo"=>nil}}
如果它有价值
tweet = {"metadata"=> {"geo"=>{"coordinates"=>[0,1]}}
这就是我试过的
if "#{tweet['metadata']['geo']}".nil? == true
puts("nil")
else
puts("#{tweet['metadata']['geo']['coordinates']}"
end
我注意到它只是检查geo是否为空,因为如果我将if语句改为等于false,它将输出“nil”。
4条答案
按热度按时间cgvd09ve1#
我认为问题可能是你在字符串中插入了哈希值,这将nil转换成了一个空字符串,实际上不是nil。
试试看:
tzcvj98z2#
对散列使用fetch是处理这类问题的一种更好的方法。下面的另一个答案链接显示了如何优雅和漂亮地处理这一问题。Ruby - Access multidimensional hash and avoid access nil object
qv7cva1a3#
使用
present?
检查nil
和blank
。使用以下代码进行检查。q9yhzks04#
如果有人碰到这个问题,现在我建议使用
dig
,如果密钥不存在,则安全地返回nil。