删除 JSON 数组中特定 JSON 对象出现的 WSO2 调解器
WSO2 Mediator that removes specific JSONobject occurrences within a JSON array
这是我第一次在 wso2 中使用 json 数组转换响应。我正在创建一个 wso2 流出调解器,用于删除 json 数组响应
中的特定 json 对象
使用 payloadfactory 序列中介,我试图从 json 数组中删除 json 对象 "price"。我遵循了 wso2 文档,但它的以太我得到了一个空体响应,或者 wso2 拒绝了流出序列。
示例响应:
{
"results": [
{
"name": "user",
"item": "test",
"price": {
"pricePerItem": 2.0,
"currency": "USD"
},
"stat": {
"groupId": 3,
"groupName": "DELIVERED",
}
},
{
"name": "user2",
"item": "test2",
"price": {
"pricePerItem": 4.0,
"currency": "USD"
},
"stat": {
"groupId": 4,
"groupName": "DELIVERED",
}
}
]
}
我的流出码:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="test_outflow.xml" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<payloadFactory media-type="json">
<format>
</format>
<args>
<arg evaluator="json" expression="$.results"/>
</args>
</payloadFactory>
<script language="js"><![CDATA[
var payload = mc.getPayloadJSON();
results = payload.results;
response = new Array();
for (i = 0; i < results.length; ++i) {
delete payload[i].id;
response[i] = l;
}
mc.setPayloadJSON(response);
]]></script>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
</sequence>
预期结果:
{
"results": [
{
"name": "user",
"item": "test",
"stat": {
"groupId": 3,
"groupName": "DELIVERED",
}
},
{
"name": "user2",
"item": "test2",
"stat": {
"groupId": 4,
"groupName": "DELIVERED",
}
}
]
}
你们有遇到过这种情况吗?谢谢!
您可以使用以下内联脚本来实现您的要求
<script language="js" xmlns="http://ws.apache.org/ns/synapse"><![CDATA[
var payload = mc.getPayloadJSON();
var results = payload.results;
var response = new Array();
for (var i = 0; i < results.length; ++i) {
delete results[i].price;
response[i] = results[i];
}
payload.results = response;
mc.setPayloadJSON(payload);
]]></script>
下面给出了为以下模拟要求开发的示例输出序列(突触)
实际响应(在 mod 之前):
{
"results": [
{
"name": "Athiththan",
"price": {
"value": 120
}
},
{
"name": "athiththan11",
"price": {
"value": 100
}
}
]
}
异常响应(在 mod 之后):
{
"results": [
{
"name": "Athiththan"
},
{
"name": "athiththan11"
}
]
}
输出序列突触配置:
<?xml version="1.0" encoding="UTF-8"?>
<outSequence xmlns="http://ws.apache.org/ns/synapse">
<script language="js"><![CDATA[
var payload = mc.getPayloadJSON();
var results = payload.results;
var response = new Array();
for (var i = 0; i < results.length; ++i) {
delete results[i].price;
response[i] = results[i];
}
payload.results = response;
mc.setPayloadJSON(payload);
]]></script>
<send/>
</outSequence>
这是我第一次在 wso2 中使用 json 数组转换响应。我正在创建一个 wso2 流出调解器,用于删除 json 数组响应
中的特定 json 对象使用 payloadfactory 序列中介,我试图从 json 数组中删除 json 对象 "price"。我遵循了 wso2 文档,但它的以太我得到了一个空体响应,或者 wso2 拒绝了流出序列。
示例响应:
{
"results": [
{
"name": "user",
"item": "test",
"price": {
"pricePerItem": 2.0,
"currency": "USD"
},
"stat": {
"groupId": 3,
"groupName": "DELIVERED",
}
},
{
"name": "user2",
"item": "test2",
"price": {
"pricePerItem": 4.0,
"currency": "USD"
},
"stat": {
"groupId": 4,
"groupName": "DELIVERED",
}
}
]
}
我的流出码:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="test_outflow.xml" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<payloadFactory media-type="json">
<format>
</format>
<args>
<arg evaluator="json" expression="$.results"/>
</args>
</payloadFactory>
<script language="js"><![CDATA[
var payload = mc.getPayloadJSON();
results = payload.results;
response = new Array();
for (i = 0; i < results.length; ++i) {
delete payload[i].id;
response[i] = l;
}
mc.setPayloadJSON(response);
]]></script>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
</sequence>
预期结果:
{
"results": [
{
"name": "user",
"item": "test",
"stat": {
"groupId": 3,
"groupName": "DELIVERED",
}
},
{
"name": "user2",
"item": "test2",
"stat": {
"groupId": 4,
"groupName": "DELIVERED",
}
}
]
}
你们有遇到过这种情况吗?谢谢!
您可以使用以下内联脚本来实现您的要求
<script language="js" xmlns="http://ws.apache.org/ns/synapse"><![CDATA[
var payload = mc.getPayloadJSON();
var results = payload.results;
var response = new Array();
for (var i = 0; i < results.length; ++i) {
delete results[i].price;
response[i] = results[i];
}
payload.results = response;
mc.setPayloadJSON(payload);
]]></script>
下面给出了为以下模拟要求开发的示例输出序列(突触)
实际响应(在 mod 之前):
{
"results": [
{
"name": "Athiththan",
"price": {
"value": 120
}
},
{
"name": "athiththan11",
"price": {
"value": 100
}
}
]
}
异常响应(在 mod 之后):
{
"results": [
{
"name": "Athiththan"
},
{
"name": "athiththan11"
}
]
}
输出序列突触配置:
<?xml version="1.0" encoding="UTF-8"?>
<outSequence xmlns="http://ws.apache.org/ns/synapse">
<script language="js"><![CDATA[
var payload = mc.getPayloadJSON();
var results = payload.results;
var response = new Array();
for (var i = 0; i < results.length; ++i) {
delete results[i].price;
response[i] = results[i];
}
payload.results = response;
mc.setPayloadJSON(payload);
]]></script>
<send/>
</outSequence>