我试图在浏览器的控制台上从clojurescript打印出一个JSON。
我找到了以下链接 - How can I pretty-print JSON using JavaScript?
以上链接提供以下js - JSON.stringify(obj, undefined, 2)
cljs中的以下翻译不起作用(.stringify js/JSON obj undefined 2)
答案 0 :(得分:10)
UPDATE :ClojureScript现在以cljs.pprint的形式提供了一个完整的clojure.pprint端口。
还有fipp范围更窄,可能更快一点。
答案 1 :(得分:5)
cljs.user> (.stringify js/JSON (clj->js {:foo 42}) nil 2)
"{\n \"foo\": 42\n}"
cljs.user> (pr-str {:foo 42})
"{:foo 42}"
答案 2 :(得分:3)
以下内容将Clojure映射(object
)转换为JSON并将其作为对象打印在控制台中,从而可以利用浏览器检查JSON功能:
(.dir js/console (clj->js object))
编辑:虽然漂亮的打印非常好,但在开发者控制台中,我仍然更喜欢以树的形式浏览数据结构,现在经常使用cljs-devtools。它是一个库,它为您提供了一个交互式数据树,可以作为普通的js-object进行扩展,但对于vanilla clojure而不必转换为js,这意味着:keywords
,{:ma "ps"}
和clj的其余部分-家庭。
目前,它要求您为项目添加leiningen依赖项和一些代码,并使用Chrome Canary。
答案 3 :(得分:1)
事实上,有人需要移植clojure.pprint
,这似乎正在shaunlebron/cljs-pprint
进行。
同时,如果您在NodeJS上运行,我会从npm使用prettyjson
。
(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
这只是一个黑客,但至少是可读的。