连接数据库结果的下划线Clojure映射键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接数据库结果的下划线Clojure映射键相关的知识,希望对你有一定的参考价值。

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

数据以强调的地图形式返回,例如{:created_at "some date"},当我期待像:created-at这样的连字符。有没有一种简单的方法可以将这些地图重新编入带有连字符的版本中?

答案

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

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

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

另一答案

在进行查询时,应该可以在选项中提供{:identifiers #(.replace % \_ -)},就像在clojure.java.jdbc中一样。

以上是关于连接数据库结果的下划线Clojure映射键的主要内容,如果未能解决你的问题,请参考以下文章

在 Clojure 的嵌套映射中关联多个键/值的惯用方法是啥?

无法使用 clojure 模式库在映射中使用字符串键验证值

Clojure 交换!在 let 绑定中的 map 函数内不起作用

在 Clojure 中将元组数组转换为哈希映射

Clojure映射中的默认值

mybatis - resultMap