小编Doh*_*mis的帖子

使用 foreach 中介器使用 WSO2 ESB 转换 JSON 数组

我正在使用 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)

wso2 wso2esb

2
推荐指数
1
解决办法
3767
查看次数

标签 统计

wso2 ×1

wso2esb ×1