2017-04-04 86 views
0

我使用Bindy用骆驼来处理CSV文件。骆驼Bindy - 斯普利特()不工作

下面的代码,请从CSV运行正常解组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; 
       } 
      }); 

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

你有任何想法,为什么出现这种情况?

感谢和问候

吉尔斯

**** SOLUTION ***** 感谢您的反馈意见。如果案例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); 

       } 
      }); 

谢谢您的帮助

吉尔斯

+0

你认为你使用的HashMap的ArrayList,也许铸造身体造成这种思念? –

+0

我甚至没有输入过程方法,因为结果是空的。因此,目前没有投射 – Gilles

+0

尝试在分割之前标记消息。 '.split(体()。记号化( ''))'还要注意的是'split'以前是'在早期版本的骆驼 –

回答

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

       } 
      }); 

谢谢您的帮助