Я должен написать вложенный список объектов (StoreLocations) в файл CSV, используя открытый 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;
}
Мой метод записи -
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);
}
}
Этот код прекрасно генерирует все столбцы, кроме списка часов работы. Это текущий результат -
Я бы предпочел либо иметь столбец с часами открытия, но каждый час открытия располагать в виде новой строки. Что-то вроде
или наличие всех часов работы в списке json внутри столбца часов работы. Возможно, мне нужно columnPositionMappingStrategy, чтобы установить эти столбцы, но мне нужно понять, как его использовать?
Вот json представление списка расположений массивов -
[{
"name":"OBI Markt Kempen",
"city":"Kempen",
"zip":47906,
"streetAndNumber":"Kleinbahnstraße 32",
"keywords":[],
"lat":51.3740233,
"lng":6.4182039,
"openingHours":
[{"dayOfWeek":"1","from1":"08:00","to1":"20:00"},
{"dayOfWeek":"2","from1":"08:00","to1":"20:00"},
]}]
Примечание: I пытался использовать super csv (), ссылаясь на Анализ CSV для нескольких / вложенных типов bean-компонентов с OpenCSV? , но это делает довольно сложным, а также я не понимаю, как записать его в файл.
Также я отослал все статьи для записи сложного / вложенного java объекта в csv через stackoverflow.