使用Clojure的writer编写CSV文件

3

我需要从服务器返回一个CSV文件。

我有一个简单的地图数据,我不想在磁盘上创建文件,我看到write-csv函数可以接受一个writer作为参数。

类似这样(但它不起作用):

(csv/write-csv (java.io.BufferedWriter. (java.io.OutputStream.  )) csv-data)

错误信息:
:cause java.io.OutputStream
 :via
 [{:type java.lang.InstantiationError
   :message java.io.OutputStream

1
“不起作用”非常宽泛。是什么不起作用?错误吗?等等。 - cfrick
3
(java.io.OutputStream) 是一个抽象类,无法直接实例化,这就是导致这个特定错误的原因。 - jas
2个回答

4
如果你只需要一个字符串,你可以使用with-out-str:
(with-out-str
  (csv/write-csv *out* csv-data))

它返回空字符串。 - Benny67b
你的 csv-data 是什么形状? - Svante
(with-out-str (csv/write-csv *out* [["foo" "bar"]])) => "foo,bar\n" - Svante

3
我已经想通了。这是我的解决方案:
(let [writer (java.io.StringWriter.)]
    (csv/write-csv writer csv-data)
    (.toString writer))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接