从 wso2 中的 soap 响应中获取 json 消息
Get json message from soap response in wso2
...
<property expression="//soap:Envelope/soap:Body/Response/Result" name="result"/>
<log>
<property expression="get-property('result')" name="result"/>
</log>
...
回应
...
<response> [ { "_id": "62908b4267c5284f7fa8320e", "index": 0, "serial": "11006883-fb2b-49ba-a6f7-0ec0daafa1c5", "Active": false, "balance": ",723.68", ,"age": 34 }] </response>
如何获得 ID 和余额的响应 属性?
当我使用
<log>
<property expression="get-property('response')" name="response"/>
</log>
仅returns Json数组仅
假设您的 XML 回复中有一个有效的 Json。您可以执行以下操作来获取 ID 和余额。这里就得用到脚本中介了。
<property expression="//response/text()" name="jsonMessageContent"/>
<script language="nashornJs"><![CDATA[
// Get the Json message portion from the response. You can use property mediator extract only that part
mc.getProperty('jsonMessageContent')
// Convert into a Json Object
var jsonObj = JSON.parse(mc.getProperty('jsonMessageContent'));
// Specify your jsonpath here and extract
var balance = jsonObj.balance;
// Set to a different property so you can use it in your integrations
mc.setProperty("balance", balance);
]]></script>
我们可以假设负载如下所示。
<response>
[
{
"_id": "62908b4267c5284f7fa8320e",
"index": 0,
"serial": "11006883-fb2b-49ba-a6f7-0ec0daafa1c5",
"Active": false,
"balance": ",723.68",
"age": 34
}
]
</response>
我们将 <response>
标签值存储到 属性 中,如下所示。
<property name="jsonMessageContent" expression="//response/text()"/>
Post 那,要使用 enrich
中介将 属性 值转换成正文。
<enrich>
<source clone="false" xpath="get-property('jsonMessageContent')"/>
<target type="body"/>
</enrich>
最后我们可以使用 xpath
从 payload
中获取像 _id,balance
这样的值
<log level="custom">
<property name="id value***" expression="//jsonArray/jsonElement/_id/text()"/>
<property name="balance value***" expression="//jsonArray/jsonElement/balance/text()"/>
</log>
输出:
id value*** = 62908b4267c5284f7fa8320e, balance value*** = ,723.68
...
<property expression="//soap:Envelope/soap:Body/Response/Result" name="result"/>
<log>
<property expression="get-property('result')" name="result"/>
</log>
...
回应
...
<response> [ { "_id": "62908b4267c5284f7fa8320e", "index": 0, "serial": "11006883-fb2b-49ba-a6f7-0ec0daafa1c5", "Active": false, "balance": ",723.68", ,"age": 34 }] </response>
如何获得 ID 和余额的响应 属性? 当我使用
<log>
<property expression="get-property('response')" name="response"/>
</log>
仅returns Json数组仅
假设您的 XML 回复中有一个有效的 Json。您可以执行以下操作来获取 ID 和余额。这里就得用到脚本中介了。
<property expression="//response/text()" name="jsonMessageContent"/>
<script language="nashornJs"><![CDATA[
// Get the Json message portion from the response. You can use property mediator extract only that part
mc.getProperty('jsonMessageContent')
// Convert into a Json Object
var jsonObj = JSON.parse(mc.getProperty('jsonMessageContent'));
// Specify your jsonpath here and extract
var balance = jsonObj.balance;
// Set to a different property so you can use it in your integrations
mc.setProperty("balance", balance);
]]></script>
我们可以假设负载如下所示。
<response>
[
{
"_id": "62908b4267c5284f7fa8320e",
"index": 0,
"serial": "11006883-fb2b-49ba-a6f7-0ec0daafa1c5",
"Active": false,
"balance": ",723.68",
"age": 34
}
]
</response>
我们将 <response>
标签值存储到 属性 中,如下所示。
<property name="jsonMessageContent" expression="//response/text()"/>
Post 那,要使用 enrich
中介将 属性 值转换成正文。
<enrich>
<source clone="false" xpath="get-property('jsonMessageContent')"/>
<target type="body"/>
</enrich>
最后我们可以使用 xpath
从 payload
_id,balance
这样的值
<log level="custom">
<property name="id value***" expression="//jsonArray/jsonElement/_id/text()"/>
<property name="balance value***" expression="//jsonArray/jsonElement/balance/text()"/>
</log>
输出:
id value*** = 62908b4267c5284f7fa8320e, balance value*** = ,723.68