如何用 OpenCSV 写 List<Number>?
How to write List<Number> with OpenCSV?
我在 StacItem 对象中有以下字段:
@JsonProperty
private List<Number> bbox = null;
我用 OpenCSV 做了一个基本实现,将这个对象写入 CSV,它主要适用于这段代码(我只展示了相关部分):
final StatefulBeanToCsv<Object> beanToCSV = new StatefulBeanToCsvBuilder<>(writer)
.withSeparator(';')
.build();
for(StacItem item : items){
beanToCSV.write(item);
}
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(HttpHeaders.CONTENT_TYPE, "text/csv");
httpHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=exportItems.csv");
logger.info("END WRITING");
return new ResponseEntity<>(new FileSystemResource(file), HttpStatus.OK);
转折点来了!在我的微服务日志中,我看到了 StacItem 的完整结构,它应该有这个 bbox 字段:
bbox=[8.24275148213394, 45.5050129344147, 7.62767704092889, 45.0691351737573]
虽然我的实现 returns 只是这样:
"8.24637830863774"
因此,当我打开我的 CSV 文件时,我只找到了具有一个值的“bbox”列,但我也需要其他值..你能告诉我为什么它停在第一个或如何获得其他 3 个值吗?
更新:
我发现这很管用!但是然后......它只为每个 StacItem 导出这个单一字段,所以我丢失了对象中的所有其他字段。
@CsvBindAndSplitByName(elementType = Number.class, writeDelimiter = ",")
@JsonProperty("bbox")
private List<Number> bbox = null;
谢谢
你试过改变吗?
beanToCSV.write(item); -> beanToCSV.writeNext(item);
或
for(StacItem item : items){
beanToCSV.write(item);
}
// to
beanToCSV.write(items);
尝试在每个要映射的字段上使用 CsvBindByName
(指定注释的 column
属性不是必需的)。
如果您愿意,甚至可以使用 CsvBindByPosition
。
我在 StacItem 对象中有以下字段:
@JsonProperty
private List<Number> bbox = null;
我用 OpenCSV 做了一个基本实现,将这个对象写入 CSV,它主要适用于这段代码(我只展示了相关部分):
final StatefulBeanToCsv<Object> beanToCSV = new StatefulBeanToCsvBuilder<>(writer)
.withSeparator(';')
.build();
for(StacItem item : items){
beanToCSV.write(item);
}
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(HttpHeaders.CONTENT_TYPE, "text/csv");
httpHeaders.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=exportItems.csv");
logger.info("END WRITING");
return new ResponseEntity<>(new FileSystemResource(file), HttpStatus.OK);
转折点来了!在我的微服务日志中,我看到了 StacItem 的完整结构,它应该有这个 bbox 字段:
bbox=[8.24275148213394, 45.5050129344147, 7.62767704092889, 45.0691351737573]
虽然我的实现 returns 只是这样:
"8.24637830863774"
因此,当我打开我的 CSV 文件时,我只找到了具有一个值的“bbox”列,但我也需要其他值..你能告诉我为什么它停在第一个或如何获得其他 3 个值吗?
更新: 我发现这很管用!但是然后......它只为每个 StacItem 导出这个单一字段,所以我丢失了对象中的所有其他字段。
@CsvBindAndSplitByName(elementType = Number.class, writeDelimiter = ",")
@JsonProperty("bbox")
private List<Number> bbox = null;
谢谢
你试过改变吗?
beanToCSV.write(item); -> beanToCSV.writeNext(item);
或
for(StacItem item : items){
beanToCSV.write(item);
}
// to
beanToCSV.write(items);
尝试在每个要映射的字段上使用 CsvBindByName
(指定注释的 column
属性不是必需的)。
如果您愿意,甚至可以使用 CsvBindByPosition
。