You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WSO2 ESB ForEach中介遍历JSON文档所有一级对象

如何用WSO2 ESB的ForEach中介遍历JSON的所有一级对象

刚好我之前处理过类似的场景,给你一步步讲怎么实现:

首先,你的JSON结构里,一级对象是forecast_1这类节点,要遍历它们的核心是用JSONPath表达式定位根节点下的所有一级子对象,然后通过ForEach中介逐个处理。

具体配置示例

先确保你的ESB已经正确配置了JSON处理(一般默认是启用的,要是没开的话,去axis2.xml里启用JsonBuilder和JsonFormatter就行),然后可以写这样的中介序列:

<sequence name="ProcessForecastSeq" xmlns="http://ws.apache.org/ns/synapse">
    <!-- ForEach遍历根节点下所有一级对象 -->
    <foreach expression="json-eval($.*)" id="forecastIterator">
        <sequence>
            <!-- 输出当前遍历到的完整一级对象内容,方便调试 -->
            <log level="custom">
                <property name="当前处理的Forecast节点" expression="json-eval($.)"/>
            </log>
            
            <!-- 如果需要获取一级节点的键名(比如forecast_1),可以这么做 -->
            <!-- 先获取根节点的所有一级键名数组 -->
            <property name="所有Forecast键名" expression="json-eval($keys($parent))" type="STRING"/>
            <!-- 获取当前遍历的索引(从0开始) -->
            <property name="当前索引" expression="get-property('forecastIterator', 'index')" type="INTEGER"/>
            <!-- 根据索引取出对应的键名 -->
            <property name="当前Forecast键名" expression="json-eval($get-property('所有Forecast键名')[$get-property('当前索引')])"/>
            
            <log level="custom">
                <property name="当前Forecast键名" expression="get-property('当前Forecast键名')"/>
            </log>
            
            <!-- 这里可以加你的业务逻辑,比如解析morning、afternoon子节点,调用其他服务等 -->
        </sequence>
    </foreach>
</sequence>

关键部分解释

  • json-eval($.*):这个JSONPath表达式会匹配根节点下的所有一级子对象,ForEach会按顺序逐个遍历这些节点。
  • 在ForEach内部的序列里,json-eval($.)代表当前遍历到的那个一级对象(比如整个forecast_1的JSON内容)。
  • 获取键名的逻辑:因为当前遍历的节点是根节点的子节点,所以通过$parent拿到根节点,再用$keys($parent)获取所有一级键名的数组,结合ForEach的索引就能拿到当前节点对应的键名。

注意事项

  • 确保你的ESB/EI版本支持json-eval()函数(ESB 5.0+、EI 6.0+都支持)。
  • 如果是REST API的负载,记得在API配置里设置messageType="application/json",让ESB正确解析JSON。
  • 调试的时候多利用Log中介输出内容,确认遍历的节点是否符合预期。

内容的提问来源于stack exchange,提问作者AndreaNobili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:37