JSON使用Poison在Elixir中编码地图

Mar*_*var 8 json elixir

我正在尝试将我的地图解析为json字符串,我将如何使用毒药?

我尝试了以下内容.

iex(19)> test = %{"api_key" => "sklfjklasfj"}
%{"api_key" => "sklfjklasfj"}
iex(20)> Poison.Encoder.encode(test, [])
[123, [[34, ["api_key"], 34], 58, [34, ["sklfjklasfj"], 34]], 125]
Run Code Online (Sandbox Code Playgroud)

我期待的是

"{"api_key": "sklfjklasfj"}"
Run Code Online (Sandbox Code Playgroud)

Mar*_*var 13

我意识到毒药正在返回一个char_list,可以将其转换为类似的字符串.

iex(27)> to_string Poison.Encoder.encode(test, [])
"{\"api_key\":\"sklfjklasfj\"}"
Run Code Online (Sandbox Code Playgroud)

截至2017年10月(Poison v3),代码将是

iex(27)> to_string Poison.encode_to_iodata!(test, [])
"{\"api_key\":\"sklfjklasfj\"}"
Run Code Online (Sandbox Code Playgroud)

或者干脆

iex(27)> Poison.encode!(test, [])
"{\"api_key\":\"sklfjklasfj\"}"
Run Code Online (Sandbox Code Playgroud)

没有to_string电话.