Elixir中的URL编码列表



好吧,完全被这个难倒了,文档没有太多。我想像这样编码一个嵌套列表:

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"

最新更新