48.3. 1.CsvRecord

CsvRecord アノテーションは、モデルのルートクラスを識別するために使用されます。レコード = CSV ファイルの 1 行を表し、複数の子モデルクラスにリンクできます。

アノテーション名レコードの種類レベル

CsvRecord

csv

Class

パラメーター名typeInfo

separator

string

必須 - ',' または ';' または 'anything' を設定できます。この値は正規表現として解釈されます。正規表現で特別な意味を持つ記号を使用する場合は、'|' の記号であれば、'|' のようにマスクする必要があります

skipFirstLine

boolean

オプション - デフォルト値 = false - CSV ファイルの最初の行をスキップできます

crlf

string

オプション - 可能な値 = WINDOWS、UNIX、MAC、またはカスタム。デフォルト値。WINDOWS - 使用するキャリッジリターン文字を定義できます。上記の 3 つ以外の値を指定すると、入力した値 (カスタム) が CRLF 文字として使用されます

generateHeaderColumns

boolean

オプション - デフォルト値 = false - CSV 生成のヘッダー列を生成するために使用します

autospanLine

boolean

Camel 2.13/2.12.2: オプション - デフォルト値 = false - 有効にすると、最後の列が自動的に行末に改行されます。たとえば、コメントなどの場合、これにより、行にすべての文字と区切り文字を含めることができます。

isOrdered

boolean

オプション - デフォルト値 = false - CSV の生成時にフィールドの順序を変更できます

quote

String

Camel 2.8.3/2.9: オプション - CSV の生成時にフィールドの引用符を指定できるようになりました。このアノテーションは、モデルのルートクラスに関連付けられており、一度宣言する必要があります。

引用

boolean

*Camel 2.11:*optional - デフォルト値 = false - CSV 生成時のマーシャリング時に値 (およびヘッダー) を引用符で囲む必要があるかどうかを示します。

endWithLineBreak

boolean

Camel 2.21: オプション - デフォルト値 = true - CSV 生成ファイルを改行で終了する必要があるかどうかを示します。

ケース 1: separator = ','

CSV レコード内のフィールド分離に使用されるセパレーターは ',' です。

10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500,
USD,08-01-2009
@CsvRecord( separator = "," )
public Class Order {

}

case 2 : separator = ';'

前のケースと比較して、ここでのセパレーターは ',' の代わりに ';'を使用しています。

10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009

@CsvRecord( separator = ";" )
public Class Order {

}

case 3 : separator = '|'

前のケースと比較して、ここでのセパレーターは ';' の代わりに '|' を使用しています。

10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD|
08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {

}

ケース 4: separator = '\",\"'

Camel 2.8.2 以前に該当

CSV レコードの解析対象フィールドに ',' または ';' が含まれる場合。これはセパレーターとしても使用されるため、Camel バインドにこのケースの処理方法を伝える別のストラテジー
を見つける必要があります。データを含むフィールドをコンマで定義するには、単純引用符または二重引用符を区切り文字として使用します
(例: '10', 'Street 10, NY', 'USA' or "10", "Street 10, NY", "USA")。
注意: この場合、単純または二重引用符である行の最初と最後の文字は bindy によって削除されます。

"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {

}

Camel 2.8.3/2.9 または never bindy から、レコードが一重引用符または二重引用符で囲まれているかどうかが自動的に検出され、CSV からオブジェクトにアンマーシャリングするときにそれらの引用符が自動的に削除されます。したがって、セパレーターに引用符を 含めず に、単に以下を実行するだけです。

"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {

}

Object から CSV にマーシャリングして引用符を使用する場合は、以下に示すように @CsvRecord の quote 属性を使用して、使用する引用符を指定する必要があることに注意してください。

@CsvRecord( separator = ",", quote = "\"" )
public Class Order {

}

case 5 : separator & skipfirstline

この機能は、クライアントがファイルの最初の行にデータフィールドの名前を入れる場合に役立ちます。

注文 ID、クライアント ID、名、姓、isin コード、商品名、数量、通貨、日付

解析プロセス中にこの最初の行をスキップする必要があることを bindy に通知するには、次の属性を使用します。

@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {

}

ケース 6: generateHeaderColumns

生成された CSV の最初の行に追加するには、次のようにアノテーションで属性 generateHeaderColumns を true に設定する必要があります。

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}

その結果、アンマーシャリングプロセス中の Bindy は、次のような CSV を生成します。

注文 ID、クライアント ID、名、姓、isin コード、商品名、数量、通貨、日付

10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009

case 7 : carriage return

camel-bindy が実行されるプラットフォームが Windows ではなく、Macintosh または Unix である場合には、次のように crlf プロパティーを変更できます。WINDOWS、UNIX、または MAC の 3 つの値を使用できます。

@CsvRecord(separator = ",", crlf="MAC")
public Class Order {

}

さらに、何らかの理由で別の行末文字を追加する必要がある場合は、crlf パラメーターを使用して指定できます。次の例では、コンマとそれに続く改行文字で行を終了できます。

@CsvRecord(separator = ",", crlf=",\n")
public Class Order {

}

ケース 8: isOrdered

モデルから CSV レコードを作成する際に従う順序が、解析時に使用される順序と異なる場合があります。次に、この場合、属性 isOrdered = true を使用して、DataField アノテーションの属性 position と組み合わせて指定できます。

@CsvRecord(isOrdered = true)
public Class Order {

   @DataField(pos = 1, position = 11)
   private int orderNr;

   @DataField(pos = 2, position = 10)
   private String clientNr;

}

備考 : pos はファイルの解析に使用され、stream は position を使用して CSV を生成します