2016-07-14 108 views
0

我是clojure编程新手。我只想知道,我怎样才能打印我的json数据。 我想是这样的:如何在clojure中打印json数据?

user=> (clojure.pprint/pprint {"a": "apple", "b": "boy" "c": "cat"}) 
;; {"a": "apple", "b": "boy", "c": "cat"} 

我想我的输出应该像

{"a": "apple", 
    "b": "boy", 
    "c": "cat"} 

谁能告诉我,我怎样才能获得JSON数据的pprint输出?

+3

我不明白;您的问题中的数据都不是有效的JSON。 –

回答

1

您需要一个库[org.clojure/data.json“0.2.6”]来使用json。

Examles:

(clojure.pprint/pprint (json/write-str {"a" "apple", "b" "boy" "c" "cat"})) 
=> "{\"a\":\"apple\",\"b\":\"boy\",\"c\":\"cat\"}" 

(clojure.pprint/pprint (json/read-str "{\"a\":\"apple\",\"b\":\"boy\",\"c\":\"cat\"}")) 
=> {"a" "apple", "b" "boy", "c" "cat"} 
0

如果我理解正确,你希望你的数据与每个键值对后换行进行格式化。如果是这样,我建议你看看clojure.pprint提供的formatting options。也就是说,您可以将*print-right-margin*设置为足够小的值,以强制每对出现在新行上。如果您省略此绑定,则pprint将使用默认值72,并且任何大于该值的表单都应该以此方式自动格式化。

(binding [clojure.pprint/*print-right-margin* 16] 
    (clojure.pprint/pprint 
    {"a" "apple" "b" "boy" "c" "cat"})) 

;; {"a" "apple", 
;; "b" "boy", 
;; "c" "cat"}