49.9. 6.KeyValuePairField
KeyValuePairField 注解定义键值对字段的属性。每个 KeyValuePairField 都由一个标签(= key)及其关联的值标识,一个类型(字符串,int, date, …)、可选模式以及是否需要字段
注解名称 | 记录类型 | 级别 |
---|---|---|
KeyValuePairField | Key Value Pair - FIX | 属性 |
参数名称 | type | info |
---|---|---|
tag | int | 必需 - 标识消息中字段的数字 - 必须是唯一的 |
pattern | 字符串 | 可选 - 默认值 = "" - 将用于格式化 Decimal, Date, … |
精度 | int | 可选 - 数字 - 代表在 Decimal number 将被格式化/解析时使用的精度 |
position | int | 可选 - 当 FIX 消息中的键/标签的位置必须不同时,必须使用 |
required | 布尔值 | 可选 - 默认值 = "false" |
impliedDecimalSeparator | 布尔值 | Camel 2.11: optional - 默认值 = "false" - 表示是否有十进制点代表在指定位置 |
问题单 1:标签
这个参数代表消息中字段的密钥
FIX message - Tag
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1") public class Order { @Link Header header; @Link Trailer trailer; @KeyValuePairField(tag = 1) // Client reference private String Account; @KeyValuePairField(tag = 11) // Order reference private String ClOrdId; @KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...) private String IDSource; @KeyValuePairField(tag = 48) // Fund code private String SecurityId; @KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell) private String Side; @KeyValuePairField(tag = 58) // Free text private String Text; }
case 2:输出中的不同位置
如果我们放入 FIX 消息中的标签/密钥必须按照预定义的顺序排序,则使用注释 @KeyValuePairField 的属性"position"
FIX message - Tag - sort
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true) public class Order { @Link Header header; @Link Trailer trailer; @KeyValuePairField(tag = 1, position = 1) // Client reference private String account; @KeyValuePairField(tag = 11, position = 3) // Order reference private String clOrdId; }