如何使用 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();
});
我正在使用 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
我认为您可以像 "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();
});