1 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊
所以我懷疑前面的輸入節(jié)點(diǎn),或者你的代碼,已經(jīng)指定了 BLOB 解析器而不是 JSON 解析器。順便說一句,如果您沒有提供解析器的名稱,則 BLOB 解析器是默認(rèn)的。
提供 BLOB 的一部分
7b224865616422203a207b22536f7572636553797374656d223a224d565844445441505244222c2022546172676574223a2241677265656d656e74222c20
進(jìn)入十六進(jìn)制到 ASCII 轉(zhuǎn)換器https://www.rapidtables.com/convert/number/hex-to-ascii.html,你得到
{"Head" : {"SourceSystem":"MVXDDTAPRD", "Target":"Agreement",
這實(shí)質(zhì)上告訴您您的消息尚未被解析。
我提供了幾個 HTTPInput 節(jié)點(diǎn)的屏幕截圖,您通常會在輸入和輸出節(jié)點(diǎn)的屬性編輯器中找到輸入/輸出消息解析選項(xiàng)卡。
一旦解決了解析器問題,就可以開始遍歷輸入樹并構(gòu)建輸出樹。下圖來自此鏈接https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac69091_.htm并顯示了元素樹的結(jié)構(gòu)。請注意,在您的情況下,XML 節(jié)點(diǎn)實(shí)際上是 JSON
如果您知道這些名稱,則可以使用 XPath 獲取元素引用。
MbElement inputRoot = inputMessageAssembly.getMessage().getRootElement();
MbElement srcSys = inputRoot.getFirstElementByPath("/JSON/Data/Head/SourceSystem");
要告訴 IIB 輸出消息應(yīng)該是 JSON 格式,您需要像這樣為其提供 JSON 解析器的名稱。
MbMessage outMessage = new MbMessage();
MbElement outRoot = outMessage.getRootElement();
MbElement outBody = outRoot.createElementAsLastChild(MbJSON.PARSER_NAME);
最后但并非最不重要的是,您當(dāng)前的代碼行現(xiàn)在可能會顯示一個空字符串或 null,因?yàn)槟獙?dǎo)航到的元素沒有任何值,只有一個名稱。
參考資料:搜索 MbElement 可獲得https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.plugin.doc/com/ibm/broker/plugin/MbElement。網(wǎng)頁格式
搜索 Java 代碼示例 MbElement 將為您提供此鏈接,其中顯示了如何使用 MbElement 類。https://www.programcreek.com/java-api-examples/?api=com.ibm.broker.plugin.MbElement
如果要看元素樹的結(jié)構(gòu),有幾個${Root} ${Environment} ${LocalEnvironment} ${ExceptionList},然后添加Trace節(jié)點(diǎn)。您幾乎可以將它們放在任何您喜歡的地方。下面的屏幕截圖來自另一個答案,但很好地說明了它們的用途。請注意,輸出文件由 Trace 節(jié)點(diǎn)保持打開狀態(tài),刷新緩沖區(qū)的最簡單方法是停止并重新啟動流,重新部署也可以。
添加回答
舉報(bào)