java - 使用 WIFE Java 库的 SWIFT MT 消息解析

标签 java swift-mt

我正在使用 WIFE Java 库将 SWIFT 消息解析为 JSON 格式。

对于“从 Swift 输出”的消息,它在 header 中包含 {1:..}{4..} 的重复 block 作为确认的一部分。解析消息时,不会抛出任何输出/错误。如何处理?

此外,如果我为 MT103 的 say 字段 50k 使用相应 MT 类的库函数并调用函数 say getcomponent1()getName&Address1(),它会通过重复的 14 block 返回此消息的正确值吗?

示例 MT103 粘贴在下面:

{1:F21XXXXXXBBAXXX9735415014}{4:{177:1410291057}{451:0}}{1:F01XXXXXNBBAXXX9735415014}{2:O1031057141029XXXXXNBBAXXX16235602381410291057U}{4:

:20:2039TT20W4407225

:23B:CRED

:32A:141029AUD844,00

:33B:AUD844,00

:50K:/XXXXXXXXXXXX XXXXXXXX

ABC LAW FIRM PTY LTD

19 MOORE STREET

TURNER

:52A:XXXXINBBXXX

:53A:NATAAU33

:57A:XXXXXNBBXXX

:59:/200006547541

ABC TECHNOLOGY SOLUTIONS PVT LT

LEVEL 2 BLOCK 1 TRANSASIA CORPORATE

PARK KAKKANAD

:70:ONLY BENEFICIARY BANK IS AUTHORIZED

TO CONVERT THE CURRENCY

:71A:OUR

:72:/REC/DAG29102014117

//INCOMPLETE INSTRUCTION PURPOSE CO

//DE CHARGES AUD 20 DEDUCTED

-}{5:{MAC:00000000}{CHK:8A860CBABFFD}}{S:{SAC:}{COP:S}}

最佳答案

您看到的行为是设计使然。

WIFE 库将尝试尽可能多地解析您的输入,直到它检测到输入的其余部分不再是单个有效 SWIFT 消息的一部分。

在你的情况下,

{1:F21XXXXXXBBAXXX9735415014}{4:{177:1410291057}{451:0}}

是一个有效的 SWIFT 消息。之后的所有内容都是另一个有效的 SWIFT 消息,但 WIFE 解析器不会理会它,因为它检测到 block 4 之后没有 SWIFT block 5(根据 SWIFT 标准),所以它只是将消息的其余部分视为未解析的文本。

假设 input 是你的整个输入字符串,你应该有类似这样的代码:

IConversionService ics = new ConversionService();
SwiftMessage sm = ics.getMessageFromFIN(input);

之后,您可以检查

Integer unparsedSize = sm.getUnparsedTextsSize();

你有一个未解析的消息,你可以用它做任何你想做的事。在您的情况下,您可以像这样检索未解析的部分:

String unparsedInput = sm.getUnparsedTexts().getText(0);
SwiftMessage sm2 = ics.getMessageFromFIN(unparsedInput);

现在,sm2真正的 SWIFT 消息,以

开头

{1:F01XXXXXNBBAXXX9735415014}{2:O103...

用它做你想做的事,并将其视为与 sm 中的消息分开的消息。

既然您知道如何正确解析所有内容,您就不必担心其余的问题。

关于java - 使用 WIFE Java 库的 SWIFT MT 消息解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740417/

相关文章:

java 类声明 <T>

.net - 使用ASCII编码通过WebSphere MQ将消息发送到SWIFT

transactions - Febelfin CODA (Coded Statement of Account) 2.3 只在比利时使用?

java - 如何在 Prowide Core (WIFE) 中设置 MT518 swift 消息模型对象的方向

finance - 输入和输出消息的 Swift 应用程序 header 标准格式

java - 如何在java中从maven读取系统属性

JavaFX 卡住窗口

java - 基于 Hazelcast 集群 TCP-IP

macos - 在 Mac 上为 IntelliJ 设置 JDK 7