60.2. アノテーション


作成されたアノテーションにより、モデルのさまざまな概念を次のように POJO にマップできます。

  • レコードのタイプ (CSV、キーと値のペア (FIX メッセージなど)、固定長など)、
  • リンク (別のオブジェクトにあるオブジェクトをリンクする)、
  • DataField とそのプロパティー (int、type、…)、
  • KeyValuePairField (FIX 財務メッセージにあるようなキー = 値形式の場合)、
  • セクション (ヘッダー、本文、およびフッターセクションを識別する)、
  • OneToMany,
  • BindyConverter,
  • FormatFactories

このセクションでは、上記について説明します。

60.2.1. 1.CsvRecord

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

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

CsvRecord

CSV

クラス

Expand
パラメーター名タイプ必須/任意デフォルト値Info

separator

String

 

トークンでレコードを分割するために使用される区切り記号 (必須): ',' または ';'、'anything' にすることができます。サポートされている唯一の空白文字はタブ (\t) です。その他の空白文字 (スペース) はサポートされていません。この値は正規表現として解釈されます。正規表現で特別な意味を持つ記号を使用する場合は、'|' の記号であれば、'|' のようにマスクする必要があります。

allowEmptyStream

boolean

 

false

allowEmptyStream パラメーターは、利用できないストリームを CSV ファイル向けに処理できるようにします。

autospanLine

boolean

 

false

Last record spans rest of line (オプション): 有効にすると、コメントなどの場合に、最後の列が自動的に行末に広がります。この設定により、その行にすべての文字と区切り文字を含めることができます。

crlf

String

 

WINDOWS

Character to be used to add a carriage return after each record (オプション): 使用するキャリッジリターン文字を定義できます。上記の 3 つ以外の値を指定すると、入力した値 (カスタム) が CRLF 文字として使用されます。WINDOWS、UNIX、MAC、またはカスタムの 3 つの値を使用できます。

endWithLineBreak

boolean

 

true

endWithLineBreak パラメーターは、CSV ファイルが改行で終了するかどうかを示します (オプション)

generateHeaderColumns

boolean

 

false

generateHeaderColumns パラメーターを使用すると、列の名前を含むヘッダーを生成した CSV に追加できます

isOrdered

boolean

 

false

出力でメッセージを並べ替える必要があるかどうかを示します

name

String

  

レコードを説明する名前 (オプション)

quote

String

 

"

指定された引用文字で列をマーシャリングするかどうか (オプション): CSV の生成時にフィールドの引用文字を指定できるようにします。このアノテーションは、モデルのルートクラスに関連付けられており、一度宣言する必要があります。

引用

boolean

 

false

マーシャリング時に値 (およびヘッダー) を引用符で囲む必要があるかどうかを示します (オプション)

quotingEscaped

boolean

 

false

引用時に値をエスケープする必要があるかどうかを示します (オプション)

removeQuotes

boolean

 

true

remove quotes パラメーターフラグ。アンマーシャリングで各フィールドの引用符を削除しようとするかどうか。

skipField

boolean

 

false

skipField パラメーターを使用すると、CSV ファイルのフィールドをスキップできます。一部のフィールドが不要な場合は、スキップできます。

skipFirstLine

boolean

 

false

skipFirstLine パラメーターを使用すると、CSV ファイルの最初の行をスキップするかどうかを指定できます。この行には、多くの場合、列の定義が含まれています

ケース 1: separator = ','

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

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

}
Copy to Clipboard Toggle word wrap

ケース 2: separator = ';'

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

10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = ";" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 3: separator = '|'

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

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

}
Copy to Clipboard Toggle word wrap

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

Camel 2.8.2 以前に該当

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

Expand

__

この場合、行頭または行末にある一重引用符または二重引用符の文字は bindy によって削除されます。

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

}
Copy to Clipboard Toggle word wrap

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

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

}
Copy to Clipboard Toggle word wrap

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

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

}
Copy to Clipboard Toggle word wrap

ケース 5: separator & skipFirstLine

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

order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
Copy to Clipboard Toggle word wrap

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

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

}
Copy to Clipboard Toggle word wrap

ケース 6: generateHeaderColumns

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

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}
Copy to Clipboard Toggle word wrap

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

order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
Copy to Clipboard Toggle word wrap

ケース 7: carriage return

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

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

}
Copy to Clipboard Toggle word wrap

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

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

}
Copy to Clipboard Toggle word wrap

ケース 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;

}
Copy to Clipboard Toggle word wrap
Expand

__

pos はファイルストリームの解析に、position は CSV の生成に使用されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat