我有一个Ecto changeset错误的关键字列表我想要转换为一个映射,以便毒药JSON解析器可以正确输出JSON格式的验证错误列表。Elixir:如何将关键字列表转换为地图?
所以我得到的错误列表如下:
[:topic_id, "can't be blank", :created_by, "can't be blank"]
...我想获得地图的错误,像这样:
%{topic_id: "can't be blank", created_by: "can't be blank"}
或者,如果我能将其转换为字符串列表,我也可以使用它。
完成这些任务的最佳方法是什么?
更多关于这种使用情况下,我不能试一下的权利,但我有,你应该能够在最后一个例子减少'的感觉[...] | > Enum.chunk(2)|> Enum.into(%{})' –
啊,我错过了列表和关键字列表之间的区别。谢谢! –
我也遇到与OP相同的问题,只有我相信Changeset已经改变了它的实现。 ATOW变更集错误_is_是关键字列表,例如'[field_1:{“is invalid”,[type:Ecto.UUID]},field_2:{“can not be blank”,[]}]'。我可以用'error_map = Enum.into(changeset.errors,%{})'这个答案的'Enum.into'方法转换成地图。作为一张地图,我可以通过'{err_msg,_type} = Map.fetch!(error_map,:field_1)'得到我的消息'。 – ibgib