1

我正在用骆驼写一个 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 在骆驼中实现这一点?

4

1 回答 1

0

我们可以使用下面的代码。

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);

    }
于 2016-07-20T09:15:41.650 回答