2011-10-20 28 views
0

私はRubyを初めて使用しており、ここ数日間使用し始めています。Ruby - ハッシュ形式の配列を実際のハッシュに変換する

次の配列をハッシュに変換する方法を探しています。 arr.length 1.

である私はそれを回避しようとしたが、ハッシュとして、それを変換することができませんでした

arr => 

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

Testlink xmlrpcが上記の形式で応答するため、これが必要でした。

これについての助けがあれば、大きな助けになります。

ありがとうございました。

+0

あなたの配列はすでにハッシュであるか、あなたのコードに何かがありません – lkuty

+0

私は何かが欠けていると思います。私は配列が表示されません。 –

+0

@Ray - 実際のxmlrpcレスポンスは "[{" id "=" "xxx"、 "name" => "show all"、 "parent_id" => "yyy"、 "tsuite_name" => "show system" "tc_external_id" => "zzz"}] " – Anand

答えて

5

ルビーへようこそ!

以下の構成はハッシュです。

{"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メソッドは、ハッシュが単一のキー、つまりarrを含むだけなので、1を報告しました。

あなたが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" } 

場合私はあなたの質問を完全に誤解しています。

+0

Karrick - 応答に感謝します。配列だけだったので、出力は中括弧で囲まれていました。それをハッシュに変換する方法はありますか? – Anand

+0

もちろん、中括弧内のインデックス、つまり 'arr [0]'を使って配列からアイテムを取得することができます。 Rubyの一般的なショートカットは 'first'メソッドを使ってArray:' arr.first'の最初の項目を取得することです。 – karrick

+0

素晴らしい、それは働いた、ありがとう。 – Anand

関連する問題