如何从数组转换为Hashmap

Ale*_*nov 0 for-loop clojure hashmap

我有一个字符串:

{:id 1, :name "Ab Bc Cd", :sex "M", :birth "01.01.1999", :address "Street 1", :oms "0001"}
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为 HashMap 但是

(hash-map my-str)
Run Code Online (Sandbox Code Playgroud)

返回 {} 所以我把它分开了:

(s/split my-str ",")
Run Code Online (Sandbox Code Playgroud)

它返回

[:id 1  :name "Ab Bc Cd"  :sex "M"  :birth "01.01.1999"  :address "Street 1"  :oms "0001"]
Run Code Online (Sandbox Code Playgroud)

然后

for [x my-arr]
(hash-map x)
Run Code Online (Sandbox Code Playgroud)

返回

({} {} {} {} {} {})
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

cfr*_*ick 7

如果您有意获得此字符串,请使用

clojure.edn/read-string

例如

user=> (require 'clojure.edn)
nil
user=> (clojure.edn/read-string (slurp "x.edn"))
{:id 1, :name "Ab Bc Cd", :sex "M", :birth "01.01.1999", :address "Street 1", :oms "0001"}
Run Code Online (Sandbox Code Playgroud)

  • 请注意该建议中的 clojure.edn,这是可信输入的安全且正确的方法。clojure.core/read-string 在某些情况下会运行输入中传递的任意拥抱。我在互联网上的公共网站上找到了这个(经过许可),所以记得把那个 clojure.edn (3认同)