当我尝试访问json中转换为ruby中哈希的数据时,如何将字符串转换为整数?
我已将json中的数据转换为哈希,并尝试访问数据。我使用了以下代码:当我尝试访问json中转换为ruby中哈希的数据时,如何将字符串转换为整数?,ruby,json,hash,Ruby,Json,Hash,我已将json中的数据转换为哈希,并尝试访问数据。我使用了以下代码: require 'yajl' json=File.new('5104.txt', 'r') parser=Yajl::Parser.new hash=parser.parse(json) puts hash['response']['venue']['id'] puts hash['response']['venue']['name'] puts hash['response']['venue']['categories'][
require 'yajl'
json=File.new('5104.txt', 'r')
parser=Yajl::Parser.new
hash=parser.parse(json)
puts hash['response']['venue']['id']
puts hash['response']['venue']['name']
puts hash['response']['venue']['categories']['parents']
当我运行此代码时,出现以下错误消息:
test.rb:8:in `[]': can't convert String into Integer (TypeError)
from test.rb:8:in `<main>'
我将json转换为哈希。如果这个json是一个数组,它的键需要整数,那么我是否可以将这个字符串转换成整数,这样我仍然可以使用这个代码来获取我想要的数据?如果没有,是否有其他方法可以获取“家长”的数据?正则表达式
谢谢:)您是否绝对肯定JSON中的内容是散列?因为该错误消息通常意味着您试图使用非整数键访问数组
我猜您的JSON实际上是一个数组,ruby尽职尽责地抱怨您没有像对待数组一样对待它。类别是一个数组,您应该在尝试获取父项之前获取一个项:
hash['response']['venue']['categories'].first['parents']
还有一个primary
参数,如果可能有多个类别,并且希望获取主要类别,请使用Array\select
:
hash['response']['venue']['categories'].select {|category| category['primary'] } .first['parents']
你能发布你的json的相关信息吗?它看起来像是一个数组(它的键需要整数)。只有七行代码,哪一行是第八行?还是第一行(缺失的)是一个shebang?
hash['response']['venue']['categories'].select {|category| category['primary'] } .first['parents']