У меня есть упомянутый ниже JSONPayload, и я хочу выбрать объект JSON, имеющий код отеля "ALE1_LON"
из массива «content».
Для этого я использовал "$.content[?(@.hotelcode='ALE1_LON')]"
выражение JSONPath, как указано ниже в посреднике свойств.
<property expression="json-eval($.content[?(@.hotelcode='ALE1_LON')])" name="hotelContet" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="xml" expression="get-property('hotelContet')"/>
</args>
</payloadFactory>
<respond/>
Проблема в том, что это возвращает пустой массив.
Но когда я пробую ту же полезную нагрузку и тот же путь JSONPath с помощью онлайн-тестера JSONPath, он говорит, что мой путь JSONPath правильный (отправка ниже как объект JSON).
[
{
"hotelcode":"ALE1_LON",
"hotelname":"Alexandra"
}
]
- Почему это не работает в посреднике свойств WSO2 ESB?
- Это из-за версии JSONPath?
- WSO2 таким образом не поддерживается?
- Мне нужно перебирать каждый элемент и фильтровать?
Полезная нагрузка JSON:
{
"_id":"INV27_1112",
"_rev":"5-876038bf65752ce4505e50baea6d5581",
"content":[
{
"hotelcode":"AMB3_LON",
"hotelname":"Ambassadors Bloomsbury"
},
{
"hotelcode":"ALE1_LON",
"hotelname":"Alexandra"
},
{
"hotelcode":"ALO_LON",
"hotelname":"Aloft London Excel"
}
]
}
- WSO2 Версия ESB: 5.0.0
Примечание. "json-eval($.content[0])"
выражения типа like возвращают результаты правильно
Ссылки: