如何在Clojure中将JSON打印到文件?

Ist*_*van 7 json clojure pretty-print

我想将JSON内容存储在文件中但使用漂亮的版本.

为了清楚起见,这是正常的JSON:

{"b":2, "a":1}
Run Code Online (Sandbox Code Playgroud)

这是它的漂亮版本:

{
    "b": 2,
    "a": 1
}
Run Code Online (Sandbox Code Playgroud)

在Clojure中有没有办法实现这一目标?

Kob*_*son 9

使用此处的cheshire库 并使用generate-string函数并将pretty标志设置为true

;; generate some JSON with pretty formatting
(generate-string {:foo "bar" :baz {:eggplant [1 2 3]}} {:pretty true})
;; {
;;   "foo" : "bar",
;;   "baz" : {
;;     "eggplant" : [ 1, 2, 3 ]
;;   }
;; }
Run Code Online (Sandbox Code Playgroud)


Joe*_*l M 6

您可以使用内置with-out-str函数捕获写入输出缓冲区的任何内容并将其存储为字符串。

(with-out-str (clojure.data.json/pprint your-map-or-whatever))
Run Code Online (Sandbox Code Playgroud)