55.2. 注解


创建的注解允许将不同模型概念映射到 OVA,如下所示:

  • 记录类型(CSV、键值对(如 FIX 消息)、固定长度 …)
  • 链接(用于链接对象),
  • DataField 及其属性(int、type …)
  • KeyValuePairField(对于在修复财务消息中具有的 key = 价值格式)
  • 部分(用于识别标题、正文和页脚部分)
  • OneToMany,
  • BindyConverter,
  • FormatFactories

本节将描述它们。

55.2.1. 1. CsvRecord

CsvRecord 注解用于标识模型的根类。它代表了一个 record = "a 行 CSV 文件",并可以链接到多个子模型类。

注解名称记录类型级别

CsvRecord

CSV

参数名称类型必需默认值info

分隔符

字符串

 

用来在令牌中分割记录(必需)的分隔符可以是 ',' 或 ';' 或 ' anything'。支持的唯一空白字符是标签(\t)。不支持其它空格(空格)。这个值被解释为正则表达式。如果要使用在正则表达式中具有特殊含义的符号,如 '|' 符号,那么您必须屏蔽它,如 '|"。

allowEmptyStream

布尔值

 

false

allowEmptyStream 参数允许 prcoess the unavaiable stream for CSV 文件。

autospanLine

布尔值

 

false

最后记录跨越其余行(可选)- 如果启用,则最后一列被自动扩展到行尾,例如,如果其评论,则允许行包含所有字符,以及分隔符 char。

crlf

字符串

 

WINDOWS

字符用于在每条记录后添加回车符(可选)- 用于定义要使用的回车符。如果您指定之前列出的三个值以外的值,则输入(custom)的值将用作 CRLF 字符。可以使用三个值:WINDOWS、UNIX、MAC 或 custom。

endWithLineBreak

布尔值

 

true

如果 CSV 文件应该以换行符而不是(可选)结尾,则最终WithBreak 参数标志

generateHeaderColumns

布尔值

 

false

generateHeaderColumns 参数允许在 CSV 中添加,生成的标题包含列的名称

isOrdered

布尔值

 

false

指明是否必须在输出中排序消息

name

字符串

  

描述记录的名称(可选)

quote

字符串

 

"

使用给出的引号字符(可选)- 是否允许在生成 CSV 时指定字段的引号字符。此注解与模型的 root 类关联,必须声明一个时间。

引用

布尔值

 

false

指明在划分时是否必须用引号(可选)标记值(和标头)

quotingEscaped

布尔值

 

false

指明在引用时是否必须转义这些值(可选)

removeQuotes

布尔值

 

true

如果 unmarshalling 应该尝试删除每个字段的引号,则 remove quotes 参数标志

skipField

布尔值

 

false

skipField 参数允许跳过 CSV 文件的字段。如果有些字段不需要,可以跳过它们。

skipFirstLine

布尔值

 

false

skipFirstLine 参数允许跳过或不支持 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 bindy 如何处理这个问题单。要定义包含逗号的数据的字段,您可以使用单引号或双引号作为分隔符(例如: '10', 'Street 10, NY', 'USA' 或 "10", "Street 10, NY", "USA", "USA")。

__

在这种情况下,该行的第一个和最后一个字符是单引号或双引号将通过 bindy 删除。

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

}

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, quantity, currency, date

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

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

}

case 6 : generateHeaderColumns

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

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}

因此,在 unmarshaing 过程中,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

案例 7:回车时返回

如果 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 注解的属性 位置 相结合。

@CsvRecord(isOrdered = true)
public Class Order {

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

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

}

__

pos 用于解析文件流,而 location 则用于生成 CSV。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.