JSON 使用 Poison 在 Elixir 中编码地图

JSON Encoding a map in Elixir using Poison

我正在尝试将我的地图解析为 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]

我期望的是

"{"api_key": "sklfjklasfj"}"

我意识到毒药正在返回一个 char_list,它可以像这样被转换成一个字符串。

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

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

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

或者干脆

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

没有 to_string 调用。