[英]How to write list of objects in a csv using opencsv CSVWriter in java
[英]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]
雖然我的實現只返回這個:
"8.24637830863774"
所以當我打開我的 CSV 時,我發現列“bbox”有一個值,但我也需要其他值。你能告訴我為什么它在第一個值上停止或如何獲得其他值 3?
更新:我發現這可以解決問題! 但是然后......它只為每個 StacItem 導出這個單個字段,所以我丟失了我的對象中的所有其他字段。
@CsvBindAndSplitByName(elementType = Number.class, writeDelimiter = ",")
@JsonProperty("bbox")
private List<Number> bbox = null;
謝謝
嘗試在要映射的每個字段上使用CsvBindByName
(指定注釋的column
屬性不是必需的)。
如果您願意,您甚至可以使用CsvBindByPosition
。
你試過改變嗎?
beanToCSV.write(item); -> beanToCSV.writeNext(item);
或者
for(StacItem item : items){
beanToCSV.write(item);
}
// to
beanToCSV.write(items);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.