gpt4 book ai didi

wso2-esb - 如何在 wso2 中迭代 JSON 负载并构建响应

转载 作者:行者123 更新时间:2023-12-03 21:33:09 25 4
gpt4 key购买 nike

如何通过将 carValue 和 bikeValue 添加到响应数组的 id ("C_05"-"B_08"/"C_07"/"B_06") 中来迭代结果数组并构造响应数组,并保持与描述相同的 desc。

JSON 负载请求:

{"results": [
{
"desc": "Blind",
"carValue": "05",
"bikeValue": "08"
},
{
"desc": "Deaf",
"carValue": "09",
"bikeValue": "10"
},
{
"desc": "Oxygen",
"carValue": "07"
},
{
"desc": "carbon",
"bikeValue": "06"
}]
}

最终响应应该是:

{
"Response" : [
{
"id" : "C_05"-"B_08",
"description" : "Blind"
},
{
"id" : "C_09"-"B_10",
"description" : "Deaf"
},
{
"id": "C_07",
"description": "Oxygen"
},
{
"id": "B_06",
"description": "carbon"
}]
}

最佳答案

您可以使用迭代、聚合和脚本中介器,正如我在此代理中向您展示的那样。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="proxyIterateJson"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<payloadFactory media-type="json">
<format>
{"results": [&#xD;
{&#xD;
"desc": "Blind",&#xD;
"carValue": "05",&#xD;
"bikeValue": "08"&#xD;
},&#xD;
{&#xD;
"desc": "Deaf",&#xD;
"carValue": "09",&#xD;
"bikeValue": "10"&#xD;
},&#xD;
{&#xD;
"desc": "Oxygen",&#xD;
"carValue": "07"&#xD;
},&#xD;
{&#xD;
"desc": "carbon",&#xD;
"bikeValue": "06"&#xD;
}]&#xD;
}
</format>
<args/>
</payloadFactory>
<iterate xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
attachPath="//jsonObject"
expression="//jsonObject/results"
id="it1"
preservePayload="true">
<target>
<sequence>
<property expression="$body//jsonObject/results/carValue"
name="carValue"
scope="default"
type="STRING"/>
<property expression="$body//jsonObject/results/bikeValue"
name="bikeValue"
scope="default"
type="STRING"/>
<property expression="$body//jsonObject/results/desc"
name="description"
scope="default"
type="STRING"/>
<script language="js">var carValue = mc.getProperty("carValue");
var bikeValue = mc.getProperty("bikeValue");
var desc = mc.getProperty("description");
var concatValue;
if(carValue == null || carValue == "") {
concatValue = "B_" + bikeValue;
} else if(bikeValue == null || bikeValue == "" ){
concatValue = "C_" + carValue;
}else {
concatValue = "C_"+ carValue + "-" + "B_" + bikeValue;
}
print("Value concatenado: "+ concatValue );
mc.setProperty("concatValue", concatValue);
mc.setPayloadJSON({"result":{"id" : concatValue,"description" : desc}});</script>
<log>
<property expression="json-eval($.result.id)" name="JSON-Payload"/>
</log>
<loopback/>
</sequence>
</target>
</iterate>
</inSequence>
<outSequence>
<property name="res" scope="default">
<ns:Response xmlns:ns="www.response.org"/>
</property>
<aggregate id="it1">
<completeCondition>
<messageCount max="-1" min="-1"/>
</completeCondition>
<onComplete enclosingElementProperty="res" expression="$body//result">
<log level="custom" separator=",">
<property expression="json-eval($.)" name="OUPUTSECUENSE"/>
</log>
<send/>
</onComplete>
</aggregate>
</outSequence>
<faultSequence/>
</target>
<description/>
</proxy>

这是回复

{"Response":
{"result":[
{"id":"C_09-B_10","description":"Deaf"},
{"id":"C_05-B_08","description":"Blind"},
{"id":"C_07","description":"Oxygen"},
{"id":"B_06","description":"carbon"}
]}}

您还可以使用自定义或payloadFactory中介器来生成Json响应

https://docs.wso2.com/display/ESB500/Writing+a+WSO2+ESB+Mediator

关于wso2-esb - 如何在 wso2 中迭代 JSON 负载并构建响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42290694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com