Say I have:
(def c [{:id 12 :name "John"}])
How do I write this in a file?
How do I get back this data structure?
A not perfect solution that works:
(require '[clojure.java.io :as io] '[cognitect.transit :as t]) (def c [{:id 12 :name "John"}]) (def dir "resources/json/") (defn write-transit [dir file-name file-type coll] (let [suffix {:json ".json" :json-verbose ".verbose.json" :msgpack ".mp"}] (with-open [out (io/output-stream (str dir "/" file-name (file-type suffix)))] (t/write (t/writer out file-type) coll))))) (defn read-transit [dir file-name file-type] (let [suffix {:json ".json" :json-verbose ".verbose.json" :msgpack ".mp"}] (with-open [in (io/input-stream (str dir "/" file-name (file-type suffix)))] (t/read (t/reader in file-type))))) (write-transit dir "test" :json c) ;=> nil (read-transit dir "test" :json) ;=> [{:id 12 :name "John"}]
Take a look at the code in the doc to read, especially at the bottom. There's a complete example of what you're looking for.
A not perfect solution that works: