clojure.java.jdbc
まとめとして、一般的に使用されるいくつかのパターン (例: ) を非推奨にする最新の API の変更 (執筆時点では 0.3.0-alpha5)と Jared の回答をまとめて、私にとってはうまくいくものを次に示しwith-query-results
ます。
最初に、関心のあるサポートされていないすべての型に対して追加のハンドラーを定義します。たとえば、次のようになります。
(extend-type org.postgresql.jdbc4.Jdbc4Array
json/JSONWriter
(-write [o out]
(json/-write (.getArray o) out)))
(extend-type java.sql.Timestamp
json/JSONWriter
(-write [date out]
(json/-write (str date) out)))
次にwith-open
、接続がまだ開いている間に JSON エンコーディングを実行するために使用します (これは少なくとも にとって重要ですorg.postgresql.jdbc4.Jdbc4Array
):
(with-open [conn (jdbc/get-connection db)]
(json/write-str
(jdbc/query {:connection conn}
["SELECT * FROM ..."]))))
clojure.java.jdbc
APIが進化するにつれてこれは変わると思いますが、今のところはうまくいきます。