繁体   English   中英

如何使用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);

这使我可以选择计算机上的程序来下载响应。 但是,数据在记事本中看起来像这样

[["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(); 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM