2017-01-24 96 views
2

好的,完全沉迷於這一個,文檔沒有太多。我想編碼這樣的嵌套列表: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

回答

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" 
+0

完美 - 謝謝! – user3162553