我想自动转储由Clojure初始化产生的Var对象 - 即一个不实现Serializable的复杂对象,并嵌套其他几个对象。
我尝试了一些框架,但它们不起作用(XStream生成带有一些空值的XML),Android不支持(Kryo需要java.misc.Unsafe,它在Android上的实现有限; JBoss Serialization也需要Android上没有的东西...),或者不是自动的(GSon需要为泛型定义类型标记......)。
效率并不重要(它只是一个实验/调试)。
知道如何解决这个问题吗?
答案 0 :(得分:0)
您可以使用pr-str
转换为字符串:
user=> (pr-str [:map {:a [1 2 3]} "string"])
"[:map {:a [1 2 3]} \"string\"]"
并使用edn回读:
user=> (require '[clojure.edn :as edn])
user=> (edn/read-string "[:map {:a [1 2 3]} \"string\"]")
[:map {:a [1 2 3]} "string"]
或只是read-string
:
user=> (read-string "[:map {:a [1 2 3]} \"string\"]")
[:map {:a [1 2 3]} "string"]
注意 read-string
从“不受信任的来源”阅读不安全 - http://clojuredocs.org/clojure_core/1.3.0/clojure.core/read