私はCamelでBindyを使用してCSVファイルを処理しています。Camel Bindy - split()not working
次のコードは、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);
}
});
が
ジル
はあなたがHashMapのののArrayListを使用して、このミスが生じ多分体をキャストと思いますか? –
結果が空であるため、私はプロセスメソッドに入ることさえしません。今までのキャスティングはありません – Gilles
分割する前にメッセージをトークン化してみてください。 .split(body()。tokenize( '、')) '以前のバージョンのCamelでは' split 'が 'splitter'だったことにも注意してください。 –