如何反转 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 中的主要内容,如果未能解决你的问题,请参考以下文章

如何反转 Array.Sort 的方向 - C#

如何使用循环反转numpy数组

字符串反转方法

如何反转列表?

PHP 数组键与值反转的方法 array_flip()

如何反转数组? [复制]