2017-06-27 36 views
1

所以我試圖建立一個解析器,基本上需要一個固定長度的文件W /多個記錄由換行符分隔(每個有可變數量的重複段)和解析它對一個POJO。然後它應該將POJO寫入JSON文檔,並將其作爲文檔插入到MongoDB集合中(每個固定長度文件集合;這裏最初的想法是我可以將創建的JSON導入到db,但我不確定是否這或多或少有效)。然而,解析器也應該能夠採取某種映射csv-type文件,該文件定義了固定長度文件的字段名稱+長度。實際上,這應該允許解析器在給定映射文件的情況下解析任何固定長度的文件。試圖建立一個解析器的固定長度的文件

我的想法到目前爲止:使用Apache駱駝處理來自固定長度到POJO(BeanIO成分)以及POJO的編組數據的解組以JSON

  1. 思維

  2. 解析CSV以獲取字段名稱和字段長度。找到某種方式來定義一個POJO和JSON模式與該信息(爲簡單起見,我假設我也可以從這個CSV拉字段的數據類型)

我需要什麼幫助:

  1. 有沒有辦法從我可以從CSV中拉出的數據生成POJO /類定義?

  2. 是否有可能從CSV生成某種JSON模式來封送POJO?

謝謝。當我想到這件事時,可能會有更多的問題,但這是我現在所擁有的。

+0

一個CSV沒有任何數據類型的一切是一個字符串,不像Excel或XML可以攜帶元數據信息。所有上述都可以在一定程度上與駱駝達成。 – Namphibian

回答

0

camel中的BeanIO數據格式將幫助您編寫CSV文件和POJO中記錄之間的映射。您無法通過CSV文件生成POJO類,您將手動執行。

一旦你創建你的映射文件,你可以處理你的文件內容如下:

<dataFormats> 
    <beanio id="myBeanio" mapping="org/apache/camel/dataformat/beanio/mappings.xml" streamName="employeeFile"/> 
</dataFormats> 
..... 
<from uri="file:location"/> 
<unmarshal ref="myBeanio"/> 
<bean ref="myActionBean" method="processRecords"/> 
.... 
0

是,可能使用問題1 http://camel.apache.org/bindy.html

@CsvRecord(separator = ",") 
public class Order { 

    @DataField(pos = 1) 
    private int orderNr; 

    @DataField(pos = 5) 
    private String isinCode; 

... 
}