Clojure从文件中读取并添加到JSON对象

时间:2015-07-24 15:08:22

标签: clojure

我有一个简单的文本文件,其中包含简单的电子邮件字符串,例如:

email1@example.com
email2@example.com
email3@example.com
email4@example.com

我希望能够通过我的REST api将此文件的内容作为json响应返回,这是一个简单的GET请求。

有没有办法我可以逐行读取文件(我可以这样做)并附加到JSON对象,以便我可以轻松地在网页上呈现内容。

{
    "emails": [
        "email1@example.com",
        "email2@example.com",
        "email3@example.com",
        "email4@example.com"
    ]
}

我希望我的REST API看起来像:

(GET "/emails" [] {
    "emails": [
        "email1@example.com",
        "email2@example.com",
        "email3@example.com",
        "email4@example.com"
    ]
})

但我想根据请求呈现JSON,因为文件可以修改。

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

(GET "/emails" []
     (clojure.pprint/cl-format nil
                               "{\"emails\": [~{~S~^,~}]}"
                               (clojure.string/split-lines (slurp "/path/to/addresses.txt"))))

答案 1 :(得分:0)

我使用Chesire library

提出了以下解决方案
(GET "/emails" []
    (generate-string {:emails (clojure.string/split-lines (slurp "/path/to/file"))} {:pretty true}))