Camel CSV сплиттер: разбор заголовков dyanamic

Я пишу сплиттер CSV на верблюде. Мои требования следующие:

  1. Первая строка будет заголовком.
  2. Заголовок не определен. Но может содержать любые атрибуты
  3. Мне нужно разделить файл, и каждый раздел содержит карту атрибутов значения ключа.

Образец CSV1:

header1, header2, header3
value11, value12 , value13
value21, value22 , value23

Ожидаемые расколы:

{"header1":"value11", "header2": "value12", "header3": "value13"}, 
{"header1":"value21", "header2": "value22", "header3": "value23"}

Образец CSV2:

header1, header2
value11, value12
value21, value22

Ожидаемые расколы:

{"header1":"value11", "header2": "value12"}, 
{"header1":"value21", "header2": "value22"}

Как я могу добиться этого на верблюде, используя Bindy или BeanIO?

1 ответ

Мы можем использовать следующий код.

byte[] bytes = exchange.getIn().getBody(byte[].class);
    InputStream inputStream = new ByteArrayInputStream(bytes);
    Reader in = new InputStreamReader(inputStream, "UTF-8");
    Iterable<CSVRecord> records = CSVFormat.EXCEL.withHeader().parse(in);
    for (CSVRecord csvRecord : records) {

        String header1= csvRecord.get("header1");
        String header2 = csvRecord.get("header2");

    // We can form json here

        System.out.println("header1 :"+header1);
        System.out.println("header2 :"+header2);

    }
Другие вопросы по тегам