2024 Clojure状态调查!中分享您的想法。

欢迎!有关此如何工作的更多信息,请参阅关于页面。

0
Collections

刚开始学习Clojure。我有一个以下的JSON字符串

(def json "{\"a\": 1, \"b\": \"val\", \"c\": {\"D/E\": [1, 2, 3]}}}")

如果在Cheshire的parse-string调用中key-fn参数为true,我得到以下的map

(def parsed-json (cheshire/parse-string json true))
;; ==> {:a 1, :b "val", :c #:D{:E [1 2 3]}}
(type parsed-json)
;; => clojure.lang.PersistentArrayMap
(type (:c parsed-json))
;; => clojure.lang.PersistentArrayMap

我该如何访问[1 2 3]数组?我不懂这里的#:D是什么,以及如何访问:E。

(get-in {:a 1, :b "val", :c #:D{:E [1 2 3]}} [:c :D/E])

1 答案

+3

选定
 
最佳答案

#:D {...}称为“Map命名空间语法”:[详情](https://clojure.org/reference/reader#map_namespace_syntax)

#:D{:E ...}{:D/E ...}相同。

...