49.4. 1.CsvRecord


CsvRecord 注解用于标识模型的根类。它表示一个记录 = CSV 文件一行,并可链接到多个子级类。

Expand
注解名称记录类型级别

CsvRecord

csv

Expand
参数名称typeinfo

分隔符

string

必需 - 可以是 ',' 或 ';' 或 'anything'。唯一支持空格字符是 tab (\t)。不支持其他空格字符(空格)。这个值被解释为正则表达式。如果要使用在正则表达式中有一个特殊含义的符号,例如 '|' 符号,而不是屏蔽它,如 '|'

skipFirstLine

布尔值

可选 - 默认值 = false - 允许跳过 CSV 文件的第一行

crlf

string

可选 - 可能的值 = WINDOWS,UNIX,MAC, 或 custom; 默认值。WINDOWS - 允许定义要使用的回车符。如果您指定了前面列出的三个值,则您输入的值(custom)将用作 CRLF 字符。

generateHeaderColumns

布尔值

可选 - default value = false - 用来生成 CSV 生成的标头列

autospanLine

布尔值

Camel 2.13/2.12.2: 可选 - 默认值 = false - 如果启用,则最后一列将自动生成到行尾,例如,如果为注释,这将允许行包含所有字符,也是分隔符字符。

isOrdered

布尔值

可选 - default value = false - 允许在生成 CSV 时更改字段的顺序

quote

字符串

Camel 2.8.3/2.9: 选项 - 允许在生成 CSV 时指定字段的引号字符。此注解与模型的根类关联,必须被声明一次。

quoting

布尔值

*Camel 2.11:*optional - default value = false - 表示在生成 CSV 时,值(和标头)是否必须加引号。

endWithLineBreak

布尔值

Camel 2.21 : 可选 - 默认值 = 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 绑定如何处理这个问题单。要使用逗号定义包含数据的字段,您可以使用 simple 或双引号
作为分隔符(例如: '10', 'Street 10, NY', 'USA' 或 "10", "Street 10, NYA")。
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 或从 bindy 将自动检测记录是否用单引号或双引号括起,并在从 CSV 到对象时自动删除这些引号。因此 ,不要在 分隔符中包含引号,但非常简单,如下所示:

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

}

请注意,如果您想要从对象到 CSV 并使用引号,则需要使用 @CsvRecord 上的 quote 属性来指定要使用的引号字符,如下所示:

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

}

case 5 : separator & skipfirstline

当客户端希望在文件的第一行中包括该功能时,其数据字段的名称很有意义:

order id, client id, first name, last name, isin code, instrument name, number, currency, date

要告知绑定在解析过程中必须跳过此第一行,我们使用属性 :

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

}

case 6 : generateHeaderColumns

要在生成的 CSV 的第一行中添加,在注解中必须将属性 generateHeaderColumns 设置为 true,如下所示:

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}

因此,在 unmarshaling 过程中绑定将生成 CSV,如下所示:

order id, client id, first name, last name, isin code, instrument name, number, currency, date

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 {

}

另外,如果出于某种原因需要添加不同的行尾字符,您可以选择使用 crlf 参数来指定它。在以下示例中,我们可以使用逗号结尾行,后跟换行符:

@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 : pos 用于解析文件,而位置用于生成 CSV 时定位

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部