使用jersey restful webservice生成.csv文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jersey restful webservice生成.csv文件相关的知识,希望对你有一定的参考价值。
我正在尝试生成一个.csv
文件作为对一个宁静的Web服务的响应(使用Jersey)。到目前为止,我能够得到一个List<HashMap<String, String>>
,密钥应该是CSV标头,值应该是CSV数据。
我正在使用Jackson API进行CSV生成。 代码流程是:
- 我从
List<HashMap<String, String>>
的DAO类中获取数据列表的名称是myArrList
。 我的第一个疑问是,在真实场景中提供这样的文件位置是一个好主意吗?我怎么能这样做?如何在不在本地系统中实际创建文件的情况下发送包含数据的文件?File file = new File( "C:/Users/.../Downloads/RadioObjectData.csv"); Writer writer = null; ResponseBuilder response = null; Reader reader = null; //Copy List of Map Object into CSV format at specified File location. try { writer = new FileWriter( file, false); reader = new FileReader( file); csvWriter( myArrList, writer); // csvReader( reader); response = Response.ok( (Object)file); response.header( "Content-Disposition", "attachment; filename="RadioObjectData.csv""); // return response.build(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Read CSV format from specified File location and print on console.. return response.build();
现在我发送这个List
到csvWriter
方法在我的系统中创建一个.csv
文件,这样我就可以发送这个文件作为对webservice的响应。(这种方法可以吗?)public static void csvWriter( List<HashMap<String, String>> listOfMap, Writer writer) throws IOException { CsvSchema schema = null; CsvSchema.Builder schemaBuilder = CsvSchema.builder(); if (listOfMap != null && !listOfMap.isEmpty()) { for (String col: listOfMap.get( 0).keySet()) { schemaBuilder.addColumn( col); } schema = schemaBuilder.build().withLineSeparator( " ").withHeader(); } CsvMapper mapper = new CsvMapper(); mapper.writer( schema).writeValues( writer).writeAll( listOfMap); writer.flush(); }
- 现在我的
.csv
驱动器在给定位置创建了一个C
文件。 我希望在将CSV作为响应发送之前,将其编码在base64中。
我怎样才能实现这一切?
以上是关于使用jersey restful webservice生成.csv文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 oAuth 2.0 保护基于 Jersey 的 REST 服务
使用 ClientResponse Jersey 调用 Rest API
使用 Jersey 和 Spring Security 实现 RESTful Web 服务