Camel Bindy - split()无效

时间:2017-04-04 06:20:46

标签: csv apache-camel bindy

我正在使用Bindy和Camel来处理CSV文件。

以下代码,从csv获取unmarshalled的bean列表运行正常。

 from("ftp://blabla.com:21/InPut?password=bla&move=done&sortBy=file:name")
.unmarshal(bindy)
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
                    Message in = exchange.getIn();
                    Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
                    System.out.println(modelMap.size());
                    int i = 0;
                }
            });

但是当我尝试这个时:

from("ftp://blabla.com/InPut?password=bla&move=done&sortBy=file:name")
.unmarshal(bindy)
.split(body())
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
                    Message in = exchange.getIn();
                    ArrayList<HashMap<String, Object>> list = (ArrayList<HashMap<String, Object>>) in.getBody();
                    System.out.println(list.size());
                    int i = 0;
                }
            });

分裂的答案是空的,没有什么可以处理的。

你知道为什么会这样吗?

谢谢和问候

吉勒

****解决方案***** 感谢您的反馈。如果案例1运作良好并让我得到一个地图列表,对于案例2,我必须先逐行处理它,然后解组。在这种情况下,正文包含POJO。

此代码有效:

 .split(body().tokenize("\n"))
 .unmarshal(bindy)
 .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                    Message in = exchange.getIn();
                    Employee emp = (Employee) in.getBody();
                    System.out.println(emp);

                }
            });

感谢您的帮助

吉勒

1 个答案:

答案 0 :(得分:0)

感谢您的反馈。如果案例1运作良好并让我得到一个地图列表,对于案例2,我必须先逐行处理它,然后解组。在这种情况下,正文包含POJO。

此代码有效:

 .split(body().tokenize("\n"))
 .unmarshal(bindy)
 .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                    Message in = exchange.getIn();
                    Employee emp = (Employee) in.getBody();
                    System.out.println(emp);

                }
            });

感谢您的帮助