:erlang.term_to_binary/1
および関数を使用してみることができ:erlang.binary_to_term/1
ます (小さなドキュメントはこちら)。
小さな例:
iex> defmodule FooStruct do
...> defstruct foofield: nil
...> end
iex> struct = %FooStruct{foofield: 42}
iex> binary_representation = :erlang.term_to_binary(struct)
<<131, 116, 0, 0, 0, 2, 100, 0 ... >>
iex> :erlang.binary_to_term(binary_representation)
%FooStruct{foofield: 42}
それはほとんどすべてで動作するはずです(私は思います!)。
特に Redis では、生のバイナリ データを直接 Redis サーバーに送信し、サーバーから (再びバイナリ データとして) フェッチした後、それらを Elixir データ構造に戻すことができます。以下に小さな例を示します ( exredisを使用):
iex> client = Exredis.start
iex> data = :erlang.term_to_binary(%{foo: "bar"})
<< ... >>
iex> client |> Exredis.query(["SET", "mymap", data])
"OK"
iex> retrieved_data = client |> Exredis.query(["GET", "mymap"])
<< ... >>
iex> :erlang.binary_to_term(retrieved_data)
%{foo: "bar"}