如何在wso2esb中为Json使用Xpath

时间:2013-07-26 12:47:00

标签: json xpath wso2 wso2esb wso2dss

我使用的是Wso2esb 4.7.0 我们在这个集合中选择了一个带Json的属性 我们如何在xml中设置if 我们可以像这样设置

<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,请告诉我

2 个答案:

答案 0 :(得分: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,则可以使用“评估者”。您需要在服务器上执行一些操作才能启用此功能。取消评论'MessageFormatter'&amp; axis2.xml中的“MessageBuilder”(我提供的链接有这些细节)

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

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

答案 1 :(得分:1)

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

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