Opencsv, StatefulBeanToCsv записывают вложенный список объектов в CSV - PullRequest
0 голосов
/ 01 апреля 2020

Я должен написать вложенный список объектов (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);
        }
    }

Этот код прекрасно генерирует все столбцы, кроме списка часов работы. Это текущий результат - enter image description here Я бы предпочел либо иметь столбец с часами открытия, но каждый час открытия располагать в виде новой строки. Что-то вроде enter image description here или наличие всех часов работы в списке 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...