Elixir中的URL编码列表

时间:2017-01-24 01:06:44

标签: elixir

好的,完全被这个问题困住了,而且文档也没什么用。我想编码一个这样的嵌套列表:

URI.encode_query(%{group: %{names: ["first", "second", "third", "fourth"]}})

基本上,这个结构是一个具有名称属性的组,它是一个列表。我收到了这个错误:(Protocol.UndefinedError) protocol String.Chars not implemented for %{names: ["first", "second", "third", "fourth"]}

我发现在Elixir中没有类似的东西。

我意识到文档说您不能将列表与String.Chars协议一起使用,但我不了解如何创建该数据结构。

tldr

我希望List作为URL中的字符串。例如,在Ruby中,我会写

names: ["first", "second", "third", "fourth"]

在Elixir中实现这一目标的想法?

好的,所以没有办法,你必须手动完成。

参考:https://elixirforum.com/t/uri-encode-query-1-and-lists/2492

1 个答案:

答案 0 :(得分:6)

URI模块基于标准 - 没有使用的标准定义如何编码嵌套参数。

但是有一些约定,其中一个由plug库实现。

iex> query = %{group: %{names: ["first", "second", "third", "fourth"]}}
iex> Plug.Conn.Query.encode(query)
"group[names][]=first&group[names][]=second&group[names][]=third&group[names][]=fourth"