我想转换以下数据:
({"name" "databases", "columns" ["name"], "values" [["testdb"] ["mydb"]]})
进入
({:name "testdb"} {:name "mydb"})
我无法想象我怎么能以一种巧妙的方式做到这一点。
答案 0 :(得分:2)
如果您想使用相同的键制作多张地图,则部分应用zipmap
的工作非常巧妙:
(defn to-maps [{:strs [columns values]}]
(map (partial zipmap (map keyword columns)) values))
示例:
(to-maps {"name" "databases", "columns" ["name"], "values" [["testdb"] ["mydb"]]})
;;=> ({:name "testdb"} {:name "mydb"})
(to-maps {"name" "databases",
"columns" ["name", "connectionstring"],
"values" [["testdb", "foo"] ["mydb", "bar"]]})
;;=> ({:connectionstring "foo", :name "testdb"} {:connectionstring "bar", :name "mydb"})