2

JSON をオブジェクトとして WSO2 ESB に渡そうとしています。次のような JSON を取得しています。

'{FIELDNAME":"NAME",FIELDVALUE:"KISHORE"}'

この JSON は、ESB を動的列として渡す必要があります。しかし、 JSON のように受け入れます{"NAME":"KISHORE"}。WSO2 ESB で上記の JSON から以下の JSON に変換するにはどうすればよいですか。1を超えると、プロキシに渡すことができません。1を下回った場合、このように合格(//name/child::text())し、「KISHORE」として値を取得します。ENRICHメディエーターで試しましたが、機能しません.

<proxy xmlns="http://ws.apache.org/ns/synapse" name="test_dynamic" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">

<target>
    <inSequence>
        <enrich>
            <source type="body" clone="true"/>
            <target type="property" property="RM"/>
        </enrich>
        <property name="RM" expression="//fieldname/child::text()" scope="default" type="STRING"/>
        <log level="custom">
            <property name="r_no" expression="get-property('R_no')"/>
            <property name="r_value" expression="get-property('R_value')"/>
            <property name="emp_d" expression="get-property('emp')"/>
            <property name="RM" expression="get-property('RM')"/>
        </log>
        <log level="full"/>
    </inSequence>
</target>
<description></description>

</proxy>

ANS: リクエスト、封筒:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body><fieldname>e_no</fieldname><fieldvalue>5</fieldvalue></soapenv:Body>
</soapenv:Envelope>
4

2 に答える 2

0

WSO2 が提供する以下のリンクは、解決したい正確なユースケースを説明しています

手順:

  1. XSLT メディエーターを使用して JSON を XML に変換する
  2. Enrich メディエータを使用して、SOAP メッセージの本文を置き換えます

詳細情報と実際のプロキシ構成については、このリンクをたどってください

https://docs.wso2.com/display/ESB480/Sample+440%3A+Converting+JSON+to+XML+Using+XSLT

于 2014-12-18T22:21:17.037 に答える
0

次のような JSON メッセージを送信する必要があると思います。

'{"RECORD":{FIELDNAME":"NAME",FIELDVALUE:"KISHORE"}}'

次に、WSO2 ESB の「Property」メディエーターによって値を取得します。

<property name="FIELDNAME" expression="//FIELDNAME/text()" scope="default" type="STRING"/>
<property name="FIELDVALUE" expression="//FIELDVALUE/text()" scope="default" type="STRING"/>
于 2013-02-25T02:50:08.990 に答える