我有一个CSV有以下的列文件:id,fname,telephone,lname,address.
我有一个Person带班id,fname和lname数据成员.我想只将这些列映射到PersonCSV文件中的对象,并丢弃telephone和address列.我怎样才能做到这一点?解决方案必须随着未来添加更多列而扩展.无论列位置如何都应该工作.
在理想的解决方案中,用户只会指定要读取的列,它应该可以正常工作.
我必须使用打开的 csv 将嵌套的对象列表(StoreLocations)写入 Csv 文件。我的模型类是-
public class StoreLocation {
private String name;
private String city;
private int zip;
private String streetAndNumber;
private List<String> keywords;
private Double lat;
private Double lng;
private List<OpeningHours> openingHours;
}
public class OpeningHours {
private String dayOfWeek;
private String from1;
private String to1;
}
Run Code Online (Sandbox Code Playgroud)
我的写作方法——
public void getStoreLocationData(List<StoreLocation> storeLocations) throws IOException, CsvDataTypeMismatchException, CsvRequiredFieldEmptyException {
try (
Writer writer = Files.newBufferedWriter(Paths.get(storeLocationDataCsv))
) {
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer)
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.build();
beanToCsv.write(storeLocations);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码完美生成所有列,除了开放时间列表。这是当前的输出-
我宁愿有一个开放时间列,并将每个开放时间安排为一个新行。就像是
或在营业时间列内的 json …
我们正在使用OpenCSV.csv是
id,fname,lname,address.line1,address.line2
Run Code Online (Sandbox Code Playgroud)
豆子是
Person{
String id;
String lname;
String fname;
Address address;
}
Address{
String line1;
String line2;
}
Run Code Online (Sandbox Code Playgroud)
是否可以Address用opencsv 填充嵌套对象!在opencsv.bean和opencsv.bean.customconverter有一些类,这似乎可以做我想做的,但我找不到任何样品.
我已经看到使用OpenCSV将 Parse CSV转换为多个/嵌套bean类型?但答案集中在SuperCSV,这不是我想要的.