Clojure嵌套标记文字

时间:2012-10-09 00:08:28

标签: clojure literals

我正在尝试解析PriorityMaps的嵌套结构:

(def reader-map
 {
   'util/pm (fn [x] (println "reading > " x) (parse-map x))
})

(binding [*data-readers* reader-map]
    (clojure.core/read-string "#util/pm \"{:z 4 :y #util/pm \"{:y 3 :x 3}\" :x 9}\""))

...但是我没有看到嵌套字符串像我期望的那样传递到我的处理程序中,只看到第一个嵌套标记的字符串:

 reading >  {:z 4 :y #er.util.net/pm

出了什么问题?

1 个答案:

答案 0 :(得分:5)

如果需要嵌套引号,则需要更多反斜杠:

(binding [*data-readers* reader-map]
    (clojure.core/read-string "#util/pm \"{:z 4 :y #util/pm \\\"{:y 3 :x 3}\\\" :x 9}\""))