gpt4 book ai didi

json - Elixir:如何将关键字列表转换为 map ?

转载 作者:IT老高 更新时间:2023-10-28 12:49:25 26 4
gpt4 key购买 nike

我有一个 Ecto 变更集错误的关键字列表,我想将其转换为 map ,以便 Poison JSON 解析器可以正确输出 JSON 格式的验证错误列表。

我得到如下错误列表:

[:topic_id, "can't be blank", :created_by, "can't be blank"]

...我想得到一张这样的错误 map :

%{topic_id: "can't be blank", created_by: "can't be blank"}

或者,如果我可以将其转换为字符串列表,我也可以使用它。

完成这两项任务的最佳方法是什么?

最佳答案

你所拥有的不是关键字列表,它只是一个列表,其中每个奇数元素代表一个键,每个偶数元素代表一个值。

区别在于:

[:topic_id, "can't be blank", :created_by, "can't be blank"] # List
[topic_id: "can't be blank", created_by: "can't be blank"] # Keyword List

可以使用 Enum.into/2 将关键字列表转换为 map

Enum.into([topic_id: "can't be blank", created_by: "can't be blank"], %{})

由于您的数据结构是一个列表,您可以使用 Enum.chunk_every/2 对其进行转换和 Enum.reduce/3

[:topic_id, "can't be blank", :created_by, "can't be blank"]
|> Enum.chunk_every(2)
|> Enum.reduce(%{}, fn ([key, val], acc) -> Map.put(acc, key, val) end)

您可以在 http://elixir-lang.org/getting-started/maps-and-dicts.html 上阅读有关关键字列表的更多信息。

关于json - Elixir:如何将关键字列表转换为 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31549555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com