2011-08-15 8 views
7

私は誤ってmy_hash.inspectに等しいmy_hash.to_sを呼び出して、Ruby 1.9の文字列にRubyハッシュを保存しました。これは私に次のような文字列を与えました:Hash.inspectまたはArray.inspectを元に戻すにはどうすればよいですか? (別名.to_s)

'{"foo"=>{"bar"=>"baz", "qux"=>"quux"}' 

これを元に戻したいと思います。これはどうですか?

私は他のシリアライズ手法については説明しませんが、私はそれらを知っています。私はちょうどこれを元に戻す方法が必要なので、私はそれを正しい方法で保存することができます。

答えて

19

最も速い答えはevalです。

my_hash = eval(my_str_hash) 
+1

ありがとうございます。それがまさに私が必要としていたものです。 –

+1

あなたが私の答えが好きなら、あなたは "√"をクリックしてそれを受け入れる必要があります:) –

+1

警告:決して、絶対に信頼できない入力を評価しないでください。 – yaauie

6

eval it。

もちろん、任意の入力に対しては安全ではありませんが、シリアル化の問題についてはあなたが知っていると言いました。再帰参照やeval(x.inspect)!= xの他のオブジェクトを含むコレクションでは機能しません。

関連する問題