Camel CSV сплиттер: разбор заголовков dyanamic
Я пишу сплиттер CSV на верблюде. Мои требования следующие:
- Первая строка будет заголовком.
- Заголовок не определен. Но может содержать любые атрибуты
- Мне нужно разделить файл, и каждый раздел содержит карту атрибутов значения ключа.
Образец 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);
}