3

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

例如:

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

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

澄清:输出将在生成 Ruby 代码的代码上下文中使用,因此 JSON 等替代方案不是我所追求的。

4

3 回答 3

3

Object#inspect可能是您正在寻找的。它将为您列出的所有类型生成 ruby​​ 表示。尽管对于日期等更复杂的类型,这可能会开始崩溃。

1.9.3 (main):0 > puts [ { :class => [ 'thing' ] }, 42 ].inspect
[{:class=>["thing"]}, 42]
于 2013-02-23T09:18:38.353 回答
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)
于 2013-02-23T03:58:39.810 回答
2

您可以使用元帅。它是 ruby​​ 核心库。

http://www.ruby-doc.org/core-1.9.3/Marshal.html

来自自述文件:

编组库将 Ruby 对象的集合转换为字节流,允许将它们存储在当前活动脚本之外。随后可以读取该数据并重构原始对象。

于 2013-02-23T06:40:46.707 回答