好吧,完全被这个难倒了,文档没有太多。我想像这样编码一个嵌套列表:
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
我想要一个列表作为 URL 中的字符串。以 Ruby 为例,我会写
names: ["first", "second", "third", "fourth"]
在长生不老药中实现这一目标的想法?
好的,所以没有办法,你必须手动完成。
参考: https://elixirforum.com/t/uri-encode-query-1-and-lists/2492
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"