如何反转 Hash.inspect 或 Array.inspect? (又名 .to_s)在 Ruby 中
Posted
技术标签:
【中文标题】如何反转 Hash.inspect 或 Array.inspect? (又名 .to_s)在 Ruby 中【英文标题】:How do I reverse Hash.inspect or Array.inspect? (aka .to_s) in Ruby 【发布时间】:2011-10-27 12:57:25 【问题描述】:我不小心在 Ruby 1.9 中通过调用 my_hash.to_s
将 Ruby 哈希保存到字符串中,这等于 my_hash.inspect
。这给了我一个这样的字符串:
'"foo"=>"bar"=>"baz", "qux"=>"quux"'
我现在想将其还原为哈希。这是怎么做到的?
我不是在寻找关于其他序列化技术的解释,我知道它们。我只需要一种方法来恢复它,以便以正确的方式保存它。
【问题讨论】:
【参考方案1】:最快的答案是:eval
。
my_hash = eval(my_str_hash)
【讨论】:
谢谢。这正是我所需要的。 所以,如果你喜欢我的回答,你必须点击“√”接受它:) 警告:永远,永远不要评估不受信任的输入。【参考方案2】:评估一下。
当然,这对于任意输入是不安全的,但您说您知道序列化问题。它不适用于包含递归引用的集合或 eval(x.inspect) != x 的其他对象。
【讨论】:
以上是关于如何反转 Hash.inspect 或 Array.inspect? (又名 .to_s)在 Ruby 中的主要内容,如果未能解决你的问题,请参考以下文章