database - 为数据库结果连字符带下划线的 Clojure 映射键

标签 database map clojure hyphenation

我正在使用 SQLingvoclojure.jdbc访问 PostgreSQL 数据库。

数据以带下划线的 map 形式返回,例如{:created_at "some date"},当我期望像 :created-at 这样的带连字符的关键字时。有没有一种简单的方法可以将这些 map 编码回它们的连字符版本?

最佳答案

我使用 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)))

第一个参数是一个函数,它接受现有 key 并返回新 key 。在您的情况下,您可以将关键字转换为字符串,将下划线替换为连字符,然后将其转换回关键字。

https://gist.github.com/jeremyheiler/fe9256e540121e771285

关于database - 为数据库结果连字符带下划线的 Clojure 映射键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25787001/

相关文章:

database - 在 Oracle 数据库的索引列上使用 where 子句从 View 中选择

c++ - 在 std::map 的元素上设置数据断点

clojure - 如何从Clojure中的某些结构中对多个向量求和

java - 从外部 clojar 导入/使用资源

clojure - 我可以在 Clojure 的宏中引用宏吗?

mysql - 了解 MyISAM 记录结构

mysql - 带有最小值和最大值的sql语句

按值对 map 内的 map 进行排序

c++ - 从 C++ 映射中删除键

ios - 不在 iOS 中的 sqlite 数据库中插入行