首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印已解析为JSON字符串的Clojure向量的每一项?

如何打印已解析为JSON字符串的Clojure向量的每一项?
EN

Stack Overflow用户
提问于 2021-08-31 15:20:31
回答 1查看 70关注 0票数 0

我的应用程序的入口点从stdin读取,调用逻辑层来处理输入,并以JSON字符串的形式返回输出(使用cheshire库)。

但目前,我的输出是JSON的向量,如下所示:

代码语言:javascript
复制
[{"person":{"active":true,"age":41}},{"person":{"active":false,"age": 39}}]

我需要在控制台的单独一行中打印每个JSON,如下所示:

代码语言:javascript
复制
{"person": {"active": true, "age": 41}}
{"person": {"active": false, "age": 39}}

这是我当前的代码:

代码语言:javascript
复制
(defn read-input! [file]
  (with-open [r (io/reader file)]
    (doall (map #(cheshire/parse-string % true)
                (line-seq r)))))

(defn input-received [input]
  (map logic/process-input input))

(defn -main
  [& args]
  (println (cheshire/generate-string (-> args first read-input! input-received))))

我试过做(apply println (cheshire/generate-string (-> args first read-input! input-received)))。但是每个字符都被打印到每一行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 09:14:27

不是将整个输出向量打印为一个JSON字符串,而是单独打印向量的每个元素:

代码语言:javascript
复制
(defn print-all [xs]
  (dorun (map (comp println cheshire/generate-string) xs)))
代码语言:javascript
复制
(print-all [{"person" {"active" true "age" 41}} {"person" {"active" false "age" 39}}])

;; prints the following:

{"person":{"active":true,"age":41}}
{"person":{"active":false,"age":39}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69001326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档