我需要从 clojure 映射创建 JSON 对象,这些映射存储诸如 clojure vars 之类的东西。基本实现在看到它们时会抛出这种错误:
java.lang.Exception:不知道如何编写 clojure.lang.Var 类的 JSON
谁能指出我如何扩展 JSON 编写器功能的示例代码?
谢谢。
我需要从 clojure 映射创建 JSON 对象,这些映射存储诸如 clojure vars 之类的东西。基本实现在看到它们时会抛出这种错误:
java.lang.Exception:不知道如何编写 clojure.lang.Var 类的 JSON
谁能指出我如何扩展 JSON 编写器功能的示例代码?
谢谢。
嗯,我想出了答案。还有另一个 SO 问题部分回答了它:如何将 clojure 代码映射到 JSON?
但这是对我有用的代码:
(defn- write-json-clojure-lang-var [x #^PrintWriter out]
(.print out (json-str (str x))))
(extend clojure.lang.Var clojure.contrib.json/Write-JSON
{:write-json write-json-clojure-lang-var})
请注意,我想做的只是渲染我所指的 Var 的字符串版本。当然,你可以做很多其他的事情......
对于我们这些使用较新的clojure.data.json
. 这是将与更新/新库一起使用的代码:
(defn- write-json-clojure-lang-var [x #^PrintWriter out]
(.print out (json-str (str x))))
(extend clojure.lang.Var clojure.data.json/JSONWriter
{:-write write-json-clojure-lang-var})