我的Spring集成嘗試從輸入通道轉換JSON消息,並通過提供相應的鍵提取JSON消息的值。它拋出SpelEvaluationException。json路徑表達式的Spring集成轉換錯誤
Spring集成配置
<int:object-to-json-transformer input-channel="inputEventChannel" output-channel="jsonMapChannel"/>
<int:transformer input-channel="jsonMapChannel" output-channel="transformChannel"
expression="#jsonPath(payload, '$.[0].EVENTNAME')"/>
錯誤消息
產生的原因:org.springframework.messaging.MessageHandlingException:表達式求值失敗:#jsonPath(有效載荷,「$ [ 0] .EVENTNAME');嵌套的異常是org.springframework.expression.spel.SpelEvaluationException:EL1022E:函數'jsonPath'映射到無法調用的類'org.springframework.expression.TypedValue'類型的對象,failedMessage = GenericMessage [payload = [{ EVENTTID「:」帳戶「,」EVENTID「:」15590「,」APPLICATIONID「:1,」CREATEDTIMESTAMP「:1493929367000,」TRANSACTIONID「:」100.2.33「}],headers = {json__ContentTypeId __ =類org.springframework.util.LinkedCaseInsensitiveMap,ID = acbc053a-B466-fbb9-8d3d-f60c78371b3e,json__TypeId __ =類java.util.ArrayList,則contentType =應用/ JSON,時間戳= 1493933245720}]
我可以知道這裏出了什麼問題?我甚至也試過這個。相同的錯誤行爲。
#jsonPath(payload, '$.EVENTNAME')
謝謝。
感謝@GaryRussell它的工作後,我添加了JSON-路徑Maven的入門如你所說。 – VeeAar
在Spring Integration中處理JSON消息還有一個問題。如果我們需要修改一些鍵值對或向現有的JSON消息添加更少的鍵值對,我是否可以知道如何實現這些?謝謝。 – VeeAar
你真的應該問一個新問題 - 這裏的管理員不喜歡評論中的擴展評論或無關的問題。你可以使用一個json-to-object-transformer,目標類是一個'LinkedHashMap' - 添加新的屬性並再次將它轉換回json。也就是說,它看起來像你的原始對象首先是一個「LinkedCaseInsensitiveMap」列表,所以爲什麼不在轉換爲JSON之前操作地圖。 –