2017-04-04 121 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); 

       } 
      }); 

謝謝您的幫助