我有一个由嵌套的内置Ruby类型组成的数据结构,例如哈希,数组,关键字,数字和字符串。我想将其转换为文字形式,以便评估该形式产生给定的数据结构。
例如:
[ { :some => [ 'thing' ] }, 42 ] -> "[ { :some => [ 'thing' ] }, 42 ]"
这可以通过递归访问结构并处理所有所需的内置类型来获得,但我想知道是否有一些合适的内置/库解决方案我可以使用。
澄清:输出将用于生成Ruby代码的代码的上下文中,因此JSON之类的替代品不是我所追求的。
答案 0 :(得分:3)
Object#inspect可能就是你要找的东西。它将为您列出的所有类型生成ruby表示。虽然对于更复杂的类型,如日期等,这可能会开始分崩离析。
1.9.3 (main):0 > puts [ { :class => [ 'thing' ] }, 42 ].inspect
[{:class=>["thing"]}, 42]
答案 1 :(得分:2)
有一些选项,JSON和YAML可能是Ruby中最受欢迎的两个选项。
# using JSON
serialized = JSON.dump([ { :some => [ 'thing' ] }, 42 ])
deserialized = JSON.load(serialized)
# using YAML
serialized = YAML.dump([ { :some => [ 'thing' ] }, 42 ])
deserialized = YAML.load(serialized)
答案 2 :(得分:2)
你可以使用Marshal。它是ruby核心库。
http://www.ruby-doc.org/core-1.9.3/Marshal.html
自述文件:
编组库将Ruby对象的集合转换为字节流,允许它们存储在当前活动脚本之外。随后可以读取该数据并重构原始对象。