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