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

欢迎!请查看 关于 页面以了解更多关于这个网站如何运作的信息。

0
集合

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

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

如果在 Cheshire parse-string 调用时的 key-fn 参数为 true,我得到了以下映射

(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 {...} 被称为 "映射命名空间语法": https://clojure.org/reference/reader#map_namespace_syntax

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

...