Elixir URI.encode_query
适用于非嵌套地图,例如:
URI.encode_query(%{ a: "b", c: "d" }) # => "a=b&c=d"
但如果我尝试编码嵌套地图,比如
URI.encode_query(%{ a: %{ b: "c" } })
我得到了
** (Protocol.UndefinedError) protocol String.Chars not implemented for %{b: "c"}
我怎么能用嵌套地图编码查询呢?
答案 0 :(得分:8)
Elixir的URI
模块不支持嵌套地图,但您可以使用支持嵌套地图的plug
包Plug.Conn.Query.encode/1
:
iex(1)> Plug.Conn.Query.encode %{ a: "b", c: "d" }
"a=b&c=d"
iex(2)> Plug.Conn.Query.encode %{ a: %{ b: "c" } }
"a[b]=c"