如何使用 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_1 和 forecast_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>
我正在做一个 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_1 和 forecast_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>