如何使用 WSO2 ESB ForEach 调解器将所有第一级对象迭代到此 JSON 文档中?

How can I use WSO2 ESB ForEach mediator to iterate on all the first level object into this JSON document?

我正在做一个 WSO2 ESB 项目,我遇到了以下问题。

在我的 ESB 流程中,我有一个像这样的 JSON(它是 REST API 的有效负载):

{
    "forecast_1": {
        "country": "Rwanda",
        "forecast_date": "2018-03-20",
        "province": "Kigali City",
        "district": "Kigali",
        "morning": {
            "min_temp": 14,
            "status": "Sun with right rain",
            "max_temp": 16,
            "humidity": "",
            "wind_direction": "",
            "wind_force": "",
            "description": "Lorem ipsum"
        },
        "afternoon": {
            "min_temp": 24,
            "status": "Dark cloud with rain",
            "max_temp": 28,
            "humidity": "",
            "wind_direction": "",
            "wind_force": "",
            "description": "Lorem ipsum"
        }
    },
    "forecast_2": {
        "country": "Rwanda",
        "forecast_date": "2018-03-25",
        "province": "Kigali",
        "district": "Kigali",
        "morning": {
            "min_temp": 21,
            "status": "Rain showers",
            "max_temp": 21,
            "humidity": "",
            "wind_direction": "",
            "wind_force": "",
            "description": "There will be heavy rain"
        },
        "afternoon": {
            "min_temp": 32,
            "status": "Rain showers",
            "max_temp": 32,
            "humidity": "",
            "wind_direction": "",
            "wind_force": "",
            "description": "There will be heavy rain with thunder"
        }
    }
}

如您所见,它包含 2 个 "root" 对象,由 forecast_XXX 标识(但可以超过 2 个),在特定情况下我有forecast_1forecast_2。这些对象直接放入我的 JSON 文档的 root 级别,而不是 JSON 数组。

我必须迭代所有这些名称以 forecast_.

开头的对象

我正在尝试使用 ForEach 调解器和 JSONPath 表达式来执行此任务,如下所示:

<foreach id="foreach_1" expression="//*[starts-with(name(), 'forecast_')" xmlns:m0="http://services.samples">
    <sequence>
        <log level="full"/>
    </sequence>
</foreach>

但是当我尝试保存时出现语法错误,所以我认为我遗漏了什么。这是解决此类问题的正确方法吗? (我必须避免使用脚本中介)。

如何正确地迭代我的 JSON 文档中的所有这些一级对象?我错过了什么? 表达式是JSON路径表达式吗?

用于 For Each 的 Xpath 不正确,请尝试替换为以下代码,看看是否出现语法错误。

<foreach id="foreach_1" expression="//*[starts-with(name(), 'forecast_')]" xmlns:m0="http://services.samples">
    <sequence>
        <log level="full"/>
    </sequence>
</foreach>