将原语的Ruby数据结构转换为文字

时间:2013-02-23 03:46:41

标签: ruby

我有一个由嵌套的内置Ruby类型组成的数据结构,例如哈希,数组,关键字,数字和字符串。我想将其转换为文字形式,以便评估该形式产生给定的数据结构。

例如:

[ { :some => [ 'thing' ] }, 42 ] -> "[ { :some => [ 'thing' ] }, 42 ]"

这可以通过递归访问结构并处理所有所需的内置类型来获得,但我想知道是否有一些合适的内置/库解决方案我可以使用。

澄清:输出将用于生成Ruby代码的代码的上下文中,因此JSON之类的替代品不是我所追求的。

3 个答案:

答案 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对象的集合转换为字节流,允许它们存储在当前活动脚本之外。随后可以读取该数据并重构原始对象。