如何在WSO2 ESB中转换JSON

时间:2013-01-18 05:29:11

标签: json wso2 wso2esb

我正在尝试将我的JSON作为对象传递给WSO2 ESB。 我正在获得这样的JSON:

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

这个JSON我需要将我的ESB作为动态列传递。但它接受像JSON {"NAME":"KISHORE"}。如何在WSO2 ESB中将JSON之上的转换为低于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:request,Envelope:

<?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>

2 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:0)

WSO2下面提供的链接解释了您有兴趣解决的确切用例

步骤:

  1. 使用XSLT介体将JSON转换为XML
  2. 使用Enrich介体替换SOAP消息的正文
  3. 请点击此链接获取详细信息和实际代理配置

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