46.3. 1.CsvRecord
CsvRecord アノテーションは、モデルのルートクラスを特定するために使用されます。これは CSV ファイルのレコード = 行を表し、複数の子モデルクラスにリンクできます。
アノテーション名 | レコードタイプ | レベル |
---|---|---|
CsvRecord | csv | クラス |
パラメーター名 | type | Info |
---|---|---|
separator | string | 必須 - ',' または ';' または 'anything' を指定できます。この値は正規表現として解釈されます。'|' のように、正規表現で特別な意味を持つ記号を使用したい場合(例: '|' 記号) |
skipFirstLine | boolean | オプション: デフォルト値 = false - CSV ファイルの最初の行をスキップできるようにします。 |
crlf | string | オプション - 使用できる値 = WINDOWS、UNIX、MAC、または custom(デフォルト値)WINDOWS - 使用するキャリッジリターン文字を定義できます。前述した 3 つの値以外の値を指定すると、入力する値が CRLF 文字として使用されます。 |
generateHeaderColumns | boolean | オプション: デフォルト値 = false - CSV 生成のヘッダー列を生成するのに使用します。 |
autospanLine | boolean | Camel 2.13/2.12.2: optional - デフォルト値 = false - 有効にすると、最後の列が行末に自動スパンされます。たとえば、コメントの場合など、行にすべての文字を含めることができ、区切り文字文字も含まれるようになります。 |
isOrdered | boolean | オプション: デフォルト値 = false - CSV の生成時にフィールドの順番を変更できるようにします。 |
引用符 | 文字列 | camel 2.8.3/2.9: オプション: CSV の生成時にフィールドの引用符文字を指定できます。このアノテーションはモデルの root クラスに関連付けられ、一度宣言する必要があります。 |
引用 | boolean | *Camel 2.11:* 任意 - デフォルト値 = false - CSV の生成時にマーシャリングする際に値(およびヘッダー)を引用符で囲む必要があるかどうかを示します。 |
endWithLineBreak | boolean | Camel 2.21: optional - default value = true - CSV 生成されたファイルが改行で終わる必要があるかどうかを示します。 |
case 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 { }
case 4 : separator = '\",\"'
Camel 2.8.2 以前に適用されます。
CSV レコードの解析されるフィールドに ',' または ';' が含まれ、これはセパレーターとしても使用されます。
は、このケースの処理方法を camel バインドy に伝えるために別のストラテジーを見つけました。コンマで区切られたデータを含むフィールドを定義するには、区切り文字として simple または double quotes
を使用します(例: '10'、'Street 10、NY'、'USA'、"Street 10、NY", "USA")。
Remark : この場合、単純または二重引用符である行の最初の文字と最後の文字がバインドによって削除されます。
"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 以降、またはバインドy は、レコードが一 重引用符または二重引用符で囲まれているかどうかを自動的に検出し、CSV からオブジェクトへのアンマーシャリング時にこれらの引用符を自動的に削除します。したがって、区切り文字には引用符を含め ない でくださいが、以下のように簡単に実行できます。
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"
@CsvRecord( separator = "," ) public Class Order { }
オブジェクトから CSV にマーシャリングし、引用符を使用する場合は、以下のように @CsvRecord の引用符属性を使用して、使用する 引用
符を指定する必要があります。
@CsvRecord( separator = ",", quote = "\"" ) public Class Order { }
ケース5: セパレーターおよびスキップライン
この機能は、クライアントがデータフィールドの名前であるファイルの最初の行に合わせる場合に適しています。
order id、クライアント ID、名、姓、コードのインストルメント化名、数値、通貨、日付
解析プロセス中にこの最初の行をスキップする必要があることをバインドするには、属性を使用します。
@CsvRecord(separator = ",", skipFirstLine = true) public Class Order { }
case 6 : generateHeaderColumns
生成された CSV の最初の行で追加するには、以下のようにアノテーションで generateHeaderColumns 属性を true に設定する必要があります。
@CsvRecord( generateHeaderColumns = true ) public Class Order { }
その結果、アンマーシャリングプロセス中にバインドすると、以下のような CSV が生成されます。
order id、クライアント ID、名、姓、コードのインストルメント化名、数値、通貨、日付
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 です。
@CsvRecord(separator = ",", crlf="MAC") public Class Order { }
さらに、何らかの理由で別の行末文字を追加する必要がある場合は、clf パラメーターを使用してそれを指定することもできます。以下の例では、行末には改行文字を続きます。
@CsvRecord(separator = ",", crlf=",\n") public Class Order { }
case 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; }
Remark : ファイルの解析に使用され、CSV の生成に位置が使用されます。