簡體   English   中英

wso2在序列內部將XML轉換為Json

[英]wso2 Transform XML to Json inside sequence

我收到來自Rabbitmq的入站XML消息,我必須使用restheart將其發送到mongodb。 我必須先修改格式化程序生成的Json的內容,然后再將其發送到mongo rest api,因為我必須修改日期時間格式的字符串發送方式,以便為mongodb添加“ ISOdate()”。

我的傳入消息可能與其他消息不同。

例如,我從入站得到這個:

<CONTENT><CODE_USER>100</CODE_USER><DATE>2017-12-12</DATE></CONTENT>

我得到了這個端點

{“ CONTENT”:{“ CODE_USER”:100“,” DATE“:” 2017-12-12“}}

所以我想在發送到端點以修改日期字符串之前修改Json格式。

有沒有一種方法可以觸發esb Json格式化程序並獲取結果,然后再將其發送到端點?

謝謝,尼古拉斯

我找到了解決方案,

我使用json-eval($。*。)函數和腳本介體在發送到端點之前修改日期格式,如下所示:

 <property expression="json-eval($.*.)" name="location" scope="default" type="STRING"/>

<script language="js"><![CDATA[var message =  new String(mc.getProperty('location'));
  var reg = /\"((\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)\.(\d{1,3})Z)\"/g;
  var mess=message.replace (reg,'{\"$date\" : \"\$1\"}');
  mess=mess.substring (1,mess.length-1);
  mc.setPayloadJSON(mess);]]></script>

<property name="ContentType" scope="axis2" type="STRING" value="application/json"/>

是的,那是可能的。 您可以將中介程序添加到順序中,以便在將響應發布到mongo-db之前進行轉換。

請檢查可用的介體,如果沒有適合您的介體,則可以通過擴展org.apache.synapse.mediators.AbstractMediator來編寫自己的介體。

有關如何編寫自定義調解器的詳細信息,請參閱以下博客: https : //medium.com/@nirothipanram/esb-few-tips-in-writing-a-custom-class-mediator-b9a322f4eaa8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM