假设我有一张地图:%{a: "b"}
。我inspect
{{}}并获得"%{a: \"b\"}"
。如何将此字符串转换为elixir中的地图?有没有优雅的方式?
答案 0 :(得分:2)
iex(1)> {map, _binding} = Code.eval_string "%{a: \"b\"}"
{%{a: "b"}, []}
iex(2)> map
%{a: "b"}
答案 1 :(得分:0)
有些功能允许您将Elixir数据类型编组/解组为:erlang.term_to_binary
和:erlang.binary_to_term
。然后可以将二进制字符串写入文件以供以后使用。但是,生成的二进制文件不是非常易读。
检查协议适用于人类阅读而不是编组数据结构。也许如果你避免了诸如Pid或Reference和不完整列表之类的不透明类型的明显缺陷,Code.eval_string技巧可以工作,但我担心在一般情况下取决于它。
答案 2 :(得分:0)
一般情况下你不能。例如,假设您有一个pid作为值或键。当你将你的字符串脱水到地图时,pid可能甚至不存在。
elixir中没有任何设施(我知道)可以允许这样做。
但您可以随时将地图编码为json并在任何时候进行解码。除非临时参考,这应该工作。