gpt4 book ai didi

在 Clojure 中对 Jdbc4Array 进行 Jsonify

转载 作者:行者123 更新时间:2023-11-29 12:31:25 25 4
gpt4 key购买 nike

我想对包含 text[] 类型列的 Postgres 表执行的查询结果进行 jsonify,但问题是 clojure.data.json.write-str 好像不知道怎么处理PG数组:

Exception Don't know how to write JSON of class org.postgresql.jdbc4.Jdbc4Array clojure.data.json/write-generic

我必须提供自定义处理程序,还是有更简单的方法?

最佳答案

总结一下,这就是对我有用的方法,将 Jared 的回答与最新的 clojure.java.jdbc API 更改(在撰写本文时为 0.3.0-alpha5)放在一起,这些更改弃用了一些常用的模式(例如 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 的发展而改变,但目前,它是有效的。

关于在 Clojure 中对 Jdbc4Array 进行 Jsonify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19103870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com