【问题标题】:How do I reverse Hash.inspect or Array.inspect? (aka .to_s) in Ruby如何反转 Hash.inspect 或 Array.inspect? (又名 .to_s)在 Ruby 中
【发布时间】:2011-10-27 12:57:25
【问题描述】:

我不小心在 Ruby 1.9 中通过调用 my_hash.to_s 将 Ruby 哈希保存到字符串中,这等于 my_hash.inspect。这给了我一个这样的字符串:

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

我现在想将其还原为哈希。这是怎么做到的?

我不是在寻找关于其他序列化技术的解释,我知道它们。我只需要一种方法来恢复它,以便以正确的方式保存它。

【问题讨论】:

    标签: ruby serialization hash inspect


    【解决方案1】:

    最快的答案是:eval

    my_hash = eval(my_str_hash)
    

    【讨论】:

    • 谢谢。这正是我所需要的。
    • 所以,如果你喜欢我的回答,你必须点击“√”接受它:)
    • 警告:永远,永远不要评估不受信任的输入。
    【解决方案2】:

    评估一下。

    当然,这对于任意输入是不安全的,但您说您知道序列化问题。它不适用于包含递归引用的集合或 eval(x.inspect) != x 的其他对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多