3

ハッシュ、配列、キーワード、数値、文字列など、ネストされた組み込みのRuby型で構成されるデータ構造があります。それをリテラル形式に変換して、その形式を評価すると、指定されたデータ構造が得られるようにしたいと思います。

例えば:

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

これは、構造を再帰的に訪問し、必要なすべての組み込みタイプを処理することで取得できますが、代わりに使用できる適切な組み込み/ライブラリソリューションがあるかどうか疑問に思っています。

明確化:出力はRubyコードを生成するコードのコンテキストで使用されるため、JSONなどの代替手段は私が求めているものではありません。

4

3 に答える 3

3

Object#inspectは、おそらく探しているものです。リストしたすべてのタイプのルビ表現が生成されます。ただし、日付などのより複雑なタイプでは、それが崩れ始める可能性があります.

1.9.3 (main):0 > puts [ { :class => [ 'thing' ] }, 42 ].inspect
[{:class=>["thing"]}, 42]
于 2013-02-23T09:18:38.353 に答える
2

マーシャルを使用できます。それはルビーコアライブラリです。

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

readmeから:

マーシャリングライブラリは、Rubyオブジェクトのコレクションをバイトストリームに変換し、現在アクティブなスクリプトの外部に保存できるようにします。その後、このデータを読み取って、元のオブジェクトを再構成できます。

于 2013-02-23T06:40:46.707 に答える
2

いくつかのオプションがありますが、JSON と YAML はおそらく Ruby で最も人気のある 2 つです。

# 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 に答える