<property name="Code" expression="json-eval($.Code)" scope="default" type="STRING"/>
<property name="Endpoint" expression="json-eval($.data.InternalConfig.Events.Code.Endpoint)" scope="default"
<property expression="fn:concat(json-eval($.data.InternalConfig.Events'.'get-property('Code')'.'Endpoint)" name="URL" type="STRING" scope="default"/>
一个属性是从有效负载获取的,另一个是从respository获取的,我正在尝试合并到一个属性中。
发布于 2021-06-16 09:02:37
我相信您正在尝试在运行时使用动态值从有效负载中提取数据。如果是,我们可以在脚本中介器平台上使用WSO2访问JSON有效负载。
例如:
下面给出了一个示例有效载荷,您正在尝试使用'some value here'
和code
值从有效负载中提取数据:
{
"userId": 10,
"code": 1,
"body": {
"id": 2,
"endpoint": "some-key",
"1": {
"anotherId": 30,
"title": "Lorum ipsum",
"some-key": "some value here"
}
}
}
下面是脚本中介器的一个示例中介序列,以实现您的需求
<?xml version="1.0" encoding="UTF-8"?><sequence xmlns="http://ws.apache.org/ns/synapse" name="mediation-sequence">
<script language="js">
<![CDATA[
// read the JSON payload from the message context
var payload = mc.getPayloadJSON();
// read the property values
var code = payload["code"];
var endpoint = payload["body"]["endpoint"];
var extracted_value = payload["body"][code][endpoint];
// set the extracted value as property to message context
mc.setProperty("ExtractedValue", extracted_value);
]]>
</script>
<log level="custom">
<property name="Extracted value" expression="$ctx:ExtractedValue" />
</log>
</sequence>
希望这能帮助你达到你的要求。
https://stackoverflow.com/questions/67980781
复制