您没有明确表示您是从 JSON 开始的,但我们假设您是。在这种情况下,我将使用cheshire
解析您的 JSON 字符串以获取表示您的数据的地图向量。为了简单起见,我们假设您已经这样做了,并且只使用var
调用data
来避免使示例混乱。
现在我们可以创建一个向量向量,然后使用
clojure.data.csv将结果保存到文件中。
您可以使用lein try在 REPL 上尝试一下。lein try
如果您还没有它,请
按照设置说明进行操作,然后运行lein try clojure.data.csv 0.1.2
. 一旦您进入具有此依赖关系的 REPL:
(require '[clojure.data.csv :as csv] '[clojure.java.io :as io])
(def data
[{:a "Completed" :b 1 :c "Friday" :d 4}
{:a "Started" :b 1 :c "Monday" :d 4}
{:a "In Progress" :b 1 :c "Sunday" :d 1}
{:a "Completed" :b 3 :c "Tuesday" :d 9}])
(defn write-csv [path row-data]
(let [columns [:a :b :c :d]
headers (map name columns)
rows (mapv #(mapv % columns) row-data)]
(with-open [file (io/writer path)]
(csv/write-csv file (cons headers rows)))))
(write-csv "/tmp/results.csv" data)
现在您可以看到您的手工制作的结果:
$ cat /tmp/results.csv
a,b,c,d
Completed,1,Friday,4
Started,1,Monday,4
In Progress,1,Sunday,1
Completed,3,Tuesday,9