如何使用 java spark 提供 csv 文件?

How do I serve csv files using java spark?

我正在使用 spark 到 运行 我正在编写的 Web 应用程序的服务器端。我稍微搜索了一下文档,但一无所获。有没有办法将数据提供给前端,以便它自动为用户下载 csv 文件?我尝试用作 csv 的数据看起来像这样。

// example data... returned by "getData()"

JSONArray test = new JSONArray()
    .put(
        new JSONArray().put("foo").put("bar")
    )
    .put(
        new JSONArray().put(1).put(2)
    );


// route
get("/csv/:path", "application/json", (req, res) -> {
    res.type("text/csv");
    JSONArray reply = getData(req);
    return data; 
});

我查看了文档的 ResponseTransformers 部分,但我不知道如何将我的数据作为可下载的 csv 文件而不是 json 对象提供。我假设 ResponseTransformer 需要以某种方式进行子类化,但我找不到一个例子来做我想做的事。谁能给我举个例子,或者给我指出一些解释如何做到这一点的文档的方向?

编辑:在 javascript 方面,我可以这样调用我的路线。

window(route);

这让我可以 select 我电脑上的一个程序来下载回复。然而,数据在记事本中看起来像这样

[["foo","bar"],[1,2]]

所以,关闭..但不是一个 csv 文件。我希望输出看起来更像这样。

foo,bar
1,2

我认为您可以像 那样使用 StringBuilder 来呈现您的 csv 文件。我还认为您请求的第二个参数 "application/json" 也可以删除。它看起来像这样:

// route
get("/csv/:path", (req, res) -> {
res.type("text/csv");
    StringBuilder sb = new StringBuilder();
    sb.append("id");
    sb.append(',');
    sb.append("Name");
    sb.append('\n');

    sb.append("1");
    sb.append(',');
    sb.append("Zack");
    sb.append('\n');
    return sb.toString(); 
});