2

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

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

这个 JSON 我需要将我的 ESB 作为动态列传递。但它像 JSON 一样接受{"NAME":"KISHORE"}。如何在 WSO2 ESB 中从 JSON 以上转换为以下 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:请求,信封:

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

我认为您应该像这样发送 JSON 消息:

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

然后通过 WSO2 ESB 中的“属性”中介获取值,例如

<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 回答
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 回答