Ruby - 将散列格式的数组转换为实际的散列

时间:2011-10-20 05:33:54

标签: ruby

我是ruby的新手并且在最近几天开始使用它,所以如果我问的是非常基本的话,我很抱歉。

我正在寻找一种方法将以下数组转换为哈希值。

arr => 

{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}

其中arr.length为1。

我尝试解决它但无法将其转换为哈希值。

我需要这个,因为Testlink xmlrpc以上面显示的格式做出响应。

对此的任何帮助都会有很大的帮助。

感谢。

1 个答案:

答案 0 :(得分:5)

欢迎使用Ruby!

以下构造是一个哈希。

{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}

如果它是一个数组,它将被大括号包围:

[{"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"}]

但我认为你得到的是:

{ "arr" => {"id"=>"xxx", "name"=>"show all", "parent_id"=>"yyy", "tsuite_name"=>"show system", "tc_external_id"=>"zzz"} }

上面的对象是哈希中的哈希。 length方法报告为1,因为哈希只包含一个密钥,即arr

您可以使用class方法测试变量的类:

$ irb
>> var = { "arr" => {"id"=>"xxx", "name"=>"show all" } }
=> { "arr" => {"id"=>"xxx", "name"=>"show all" } }
>> var.class
=> Hash

如果你需要的只是内部哈希值,那就抓住它:

>> keep = var["arr"]
=> {"id"=>"xxx", "name"=>"show all" }

如果我完全误解了你的问题,请澄清。