我正在尝试在浏览器的控制台上从 clojurescript 漂亮地打印 JSON。
我找到了以下链接 -如何使用 JavaScript 漂亮地打印 JSON?
上面的链接提供了以下js -JSON.stringify(obj, undefined, 2)
cljs 中的以下翻译不起作用(.stringify js/JSON obj undefined 2)
- cljs 中是否有任何用于漂亮打印的本地方式?
- 任何想法为什么上面的 cljs 表达式不起作用?
我正在尝试在浏览器的控制台上从 clojurescript 漂亮地打印 JSON。
我找到了以下链接 -如何使用 JavaScript 漂亮地打印 JSON?
上面的链接提供了以下js -JSON.stringify(obj, undefined, 2)
cljs 中的以下翻译不起作用(.stringify js/JSON obj undefined 2)
更新:ClojureScript 现在以 cljs.pprint 的形式拥有完整的 clojure.pprint 端口。
还有一个fipp范围更窄,可能更快一些。
cljs.user> (.stringify js/JSON (clj->js {:foo 42}) nil 2)
"{\n \"foo\": 42\n}"
cljs.user> (pr-str {:foo 42})
"{:foo 42}"
下面将 Clojure 映射 ( object
) 转换为 JSON,并将其作为对象打印在控制台中,从而可以利用浏览器检查 JSON 功能:
(.dir js/console (clj->js object))
编辑:虽然漂亮的打印非常好,但在开发人员控制台中,我仍然更喜欢将数据结构作为树浏览的能力,现在经常使用cljs-devtools。它是一个为您提供交互式数据树的库,可以将其扩展为普通的 js-object,但对于 vanilla clojure,无需转换为 js、meaning:keywords
和{:ma "ps"}
clj-family 的其余部分。
目前,它需要您向项目中添加 leiningen 依赖项和一些代码并使用 Chrome Canary。
clojure.pprint
已通过 release 移植到 ClojureScript 0.0-3255
。它被称为cljs.pprint
。
确实,有人需要移植clojure.pprint
,这似乎正在发生shaunlebron/cljs-pprint
。
同时,如果你在 NodeJS 上运行,我使用prettyjson
from npm。
(ns foo (:require [cljs.nodejs :as nodejs]
[cljs.core :refer [clj->js]]))
(nodejs/enable-util-print!)
(def render (.-render (nodejs/require "prettyjson")))
(defn pp [value] (println (render (clj->js value))))
然后它以彩色YAML打印值:
ClojureScript:foo> (pp {:a 123 :foo ["baz" 42]})
a: 123
foo:
- baz
- 42
这只是一个 hack,但至少是可读的。