我正在使用SQLingvo和clojure.jdbc来访问PostgreSQL数据库。
数据作为强调后的地图返回,例如{:created_at "some date"}
,当我希望使用联属关键字:created-at
时。有没有一种简单的方法可以将这些地图重新编入带有连字符的版本中?
答案 0 :(得分:3)
我已使用clojure.walk/postwalk
来完成此任务。
(defn transform-keys
"Recursively transforms all map keys in coll with the transform-key fn."
[transform-key coll]
(letfn [(transform [x] (if (map? x)
(into {} (map (fn [[k v]] [(transform-key k) v]) x))
x))]
(walk/postwalk transform coll)))
第一个参数是一个函数,它接受现有密钥并返回新密钥。在您的情况下,您可以将关键字转换为字符串,用连字符替换下划线,并将其转换回关键字。
答案 1 :(得分:0)
进行查询时,应该可以在选项中提供{:identifiers #(.replace % \_ \-)}
,就像在clojure.java.jdbc
中一样。