我有以下类(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/