0

我正在使用 Wso2esb 4.7.0 我们在此设置一个带有 Json 的属性的选项我们如何设置如果在 xml 中我们可以这样设置

<property name="username"
                   expression="//username/text()"
                   scope="default"
                   type="STRING"/>

用于有效载荷工厂

<payloadFactory>
            <format>
               <p:login xmlns:p="http://authentication.services.core.carbon.wso2.org">
                  <p:username>$1</p:username>
                  <p:password>$2</p:password>
                  <p:remoteAddress>$3</p:remoteAddress>
               </p:login>
            </format>
            <args>
               <arg expression="//username/text()"/>
               <arg expression="//password/text()"/>
               <arg expression="get-property('client_ip_address')"/>
            </args>
         </payloadFactory>

我们如何使用 JSon 来实现它我尝试使用此属性

    <property name="faisal" expression="$name/text()" scope="default"/>

但它不起作用,我们可以通过 Wso2dss 传递这个 JSON 请告诉我

4

2 回答 2

1

尽管您正在发送 JSON 输入消息,但在 ESB 服务内部传递的消息是 SOAP。所以在这种情况下也可以使用相同的属性定义。

<property name="username"
                   expression="//username/text()"
                   scope="default"
                   type="STRING"/> 
于 2013-07-27T02:56:31.383 回答
1

如果您使用的是“ESB 4.7”,则它带有默认的“JSON”支持,这意味着应该转换为“XML”。您将设置与传递的“XML”相同的属性。

  <login><username>JohnDoe</username><pass>yourPass</pass><login> == {“login”:{“username”: ”JohnDoe”,      "pass" : "yourPass"}}

     <property name="username"
               expression="//login/username/text()"
               scope="default"
               type="STRING"/>

如果您想保持“JSON”消息完整而不转换为 XML 以节省性能,则可以使用另一个选项,您可以使用“评估器”。您需要在服务器上执行几项操作才能启用此功能。取消注释axis2.xml中的'MessageFormatter'和'MessageBuilder'(我提供的链接有这些细节)

 <arg expression="$.login.username" evaluator="json"/>

详细说明和示例:http: //docs.wso2.org/wiki/display/ESB470/PayloadFactory+Mediator

于 2013-07-26T17:11:05.150 回答