我正在使用 WSO2 ESB V4.9.0 为需要返回转换后的 JSON 数组的指定端点创建代理服务。我已经在输出序列中设置了一个带有 foreach 中介器和 payloadfactory 的代理服务以及日志语句,以查看发生了什么。结果是每个单独的数组元素都按预期进行了转换,但是在循环结束时,单个元素不会合并回单个数组,正如文档所暗示的那样。结果是只返回最后一个元素。
我唯一能看到的是,我见过的大多数示例不仅有一个带有数组的元素,而不仅仅是一个数组。有谁知道这是否可能?
原始端点返回如下内容:
[
{"id": "1",
"type": "object",
"name": "first",
"bounds":"[[-0.256,51.531],[-0.102,51.656]]",
"displayName": "first record"},
{"id": "2",
"type": "object",
"name": "second",
"bounds":"[[-0.256,51.531],[-0.102,51.656]]",
"displayName": "second record"},
..etc...
]
Run Code Online (Sandbox Code Playgroud)
代理服务所需的返回是这样的:
[
{"name": "first record",
"bounds":"[[-0.256,51.531],[-0.102,51.656]]"},
{"name": "second record",
"bounds":"[[-0.256,51.531],[-0.102,51.656]]"},
..etc...
]
Run Code Online (Sandbox Code Playgroud)
代理的实际回报是这样的:
{"name": "first record",
"bounds":"[[-0.256,51.531],[-0.102,51.656]]"}
Run Code Online (Sandbox Code Playgroud)
代理的配置在这里:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="newfeed_v2"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log/>
</inSequence>
<outSequence>
<log level="full">
<property name="MESSAGE" value="FIRST"/>
</log>
<foreach id="foreach_1" expression="//jsonArray/jsonElement">
<sequence>
<payloadFactory …Run Code Online (Sandbox Code Playgroud)