java - REST:以 CSV 形式返回对象列表,而不写入磁盘(java spring)

标签 java spring rest csv

我有以下类(class)。我通过 JPA 存储库查询获取此类的对象列表。

public class SettlementSummaryDTO {
   private Long id;
   private String filePath;
   private Double commissionAmount;
   private String merchantGroupId;
   private Double netTransactionAmount;
   private Double purchaseAmount;
   private Long purchaseCount;
   private Double refundAmount;
   private Long refundCount;
   private Double settlemantAmount;
   private Integer settlementBatchNumber;
   private Double taxAmount;
   private Date date;
   private String merchantId;
   private String merchantName;
   private String location;
   private SettlementStatus settlementStatus;
}

所以我有 List SettlementSummaryDTO。我想将此对象列表转换为 CSV(列表中的每个对象作为一行)。我想将此 CSV 作为文件返回给客户端(浏览器)。但我不想把它写在磁盘上。如何实现这一目标?

注意:我尝试以下操作但未能成功(响应中获取空文件)

ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
CsvWriterSettings csvWriterSettings = new CsvWriterSettings();
csvWriterSettings.setAutoConfigurationEnabled(true);
CsvWriter csvWriter = new CsvWriter(servletOutputStream, csvWriterSettings);
csvWriter.addValues(settlementSummaryDTOs);
httpServletResponse.setContentType("text/csv");
httpServletResponse.setHeader("Content-Disposition", "attachment; filename=settlement.csv");
csvWriter.flush();

最佳答案

看起来您正在使用 univocity-parsers。您必须使用 @Parsed 注释 SettlementSummaryDTO 类的字段或方法。

然后您可以使用以下一行将您的 bean 写入输出:

new CsvRoutines().
    writeAll(settlementSummaryDTOs, SettlementSummaryDTO.class, servletOutputStream, Charset.forName("UTF-8"));

关于java - REST:以 CSV 形式返回对象列表,而不写入磁盘(java spring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675152/

相关文章:

java - 检测连接的蓝牙媒体设备

Spring 4.2.3 和 fastxml Jackson 2.7.0 不兼容

node.js - 如何在 express.js GET 请求中访问正文?

python - 如何在 Django 中生成 303 Http 响应?

java - 使用 PDFBox 缩放

java - 带有参数线程的 JPA2 CriteriaQuery 可以安全地创建查询吗?

java - 动态数据到 excel servlet

java - 使用 TestRestTemplate 对多部分 POST 请求进行集成测试返回 400

java - Spring 3.2 中的 AsyncRestTemplate.exchange 等效项

jQuery:如何将此 URL 转换为 GET 请求