spring-boot - Opencsv使用ColumnPositionMapping写入字符串列表
问题描述
我有下面的代码
public class Carrier extends BaseDBClass{
@CsvBindByName
private String name;
@CsvRecurse
private CarrierType carrierType;
@CsvRecurse
private LocationAddress address;
@CsvBindAndSplitByName(elementType = String.class, writeDelimiter = ",")
private List<String> phoneNumbers;
}
List<Carrier> carriers = getAll();
PrintWriter writer = response.getWriter();
ColumnPositionMappingStrategy<Carrier> mappingStrategy = new ColumnPositionMappingStrategy<>();
mappingStrategy.setType(Carrier.class);
String[] columns=new String[]{"id","name","description","carrierType", "country","city", "street", "streetNumber", "postalCode", "phoneNumbers", "createdAt", "modifiedAt"};
mappingStrategy.setColumnMapping(columns);
response.getWriter().write(String.join(",", Arrays.stream(columns).map(column->"\""+column+"\"").toArray(String[]::new))+"\n");
StatefulBeanToCsv<Carrier> beanWriter = new StatefulBeanToCsvBuilder<Carrier>(writer)
.withSeparator(CSVWriter.DEFAULT_SEPARATOR)
.withMappingStrategy(mappingStrategy)
.build();
beanWriter.write(carriers);
response.getWriter().close();
问题是它只写了 1 个电话号码,而不是用逗号分隔的列表。我已经在没有 ColumnPositionMapping 的情况下尝试过它并且它可以工作,但我想指定自定义标题名称和自定义列位置!
解决方案
推荐阅读
- c - 使用 facil.io 框架刷新网页时出现 304 错误
- java - 渲染列入白名单的路径时不添加样式表
- python - 基于列在Python中重新排序数组
- google-cloud-dataflow - 在为 Apache Beam 中的每个窗口成功发出输出文件后,有没有办法创建最后创建的空文件?
- python - 有没有办法在 Django 中设置字段警报的样式?
- java - Chromedriver 在 selenium 网络驱动程序中打开一个空白页面而不是目标网站
- python - News Scraper 总是得到第二篇最新文章而不是最新文章
- python - 我想弄清楚为什么我的字谜函数得到错误的输出
- python - Azure DevOps - 添加到构建管道的 Python 和 Powershell 任务未发布其进度
- python-3.x - 完成训练过程后如何获得模型的训练精度?