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
答案 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"