好吧,完全被这个问题困住了,而且文档没有多少.我想编码一个这样的嵌套列表:
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
该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"