我正在使用REST,它使用以下JSON表示一个帐户:
{ "userName": "foo", "password": "bar", "emailId": "baz" }我有一个Clojure函数来创建一个可以像这样调用的帐户:
(create-account :username "foo" :password "bar" :email "baz")我想要做的是将create-account获得的漂亮键映射到REST所期望的时髦键上。我目前的解决办法是:
(def clj->rest {:username :userName
:email :emailId})
(apply hash-map
(flatten (map
(fn [[k v]] [(or (clj->rest k) k) v])
args))) ;; args is the arguments to create-account, as above有什么更惯用的方法来完成这个任务吗?
发布于 2014-01-31 15:54:03
(clojure.set/rename-keys args clj->rest)..。模仿你的解决方案,产生.
{:emailId "baz", :userName "foo", :password "bar"}我想您已经想出了如何将其转换为所需的JSON。
发布于 2014-01-31 15:23:11
您可以编写一个简单的帮助函数来用给定的映射函数映射所有键:
(defn kmap [f m]
(into {} (map #(update-in % [0] f) m)))因此,现在您可以轻松地映射您的论点:
(def clj->rest {:username :userName
:password :password
:email :emailId})
(kmap clj->rest args)发布于 2014-01-31 15:37:45
看起来不错,只需将(apply hash-map (flatten ...更改为(into {} ...以获得更多的惯用代码即可。
https://stackoverflow.com/questions/21483044
复制相似问题