Clojure - 将数据从一种形式转换为另一种形式

时间:2015-09-02 00:29:45

标签: clojure

我想转换以下数据:

({"name" "databases", "columns" ["name"], "values" [["testdb"] ["mydb"]]})

进入

({:name "testdb"} {:name "mydb"})

我无法想象我怎么能以一种巧妙的方式做到这一点。

1 个答案:

答案 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"})