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

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

...