Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我尝试访问json中转换为ruby中哈希的数据时,如何将字符串转换为整数?_Ruby_Json_Hash - Fatal编程技术网

当我尝试访问json中转换为ruby中哈希的数据时,如何将字符串转换为整数?

当我尝试访问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'][

我已将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']['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']