WSO2 EI 6.5.0 получить конкретную строку из значения выражения json-eval - PullRequest
1 голос
/ 03 июля 2019

У меня ниже ответ от службы данных / wso2 /

Я хочу показать только эту строку (<<strong> SECURITYCODE буруу байна !!! >) в errorMessage ключ из этого:

{
        "Error": {
            "errorCode": 501,
            "errorMessage": "DS Code: VALIDATION_ERROR\nNested Exception:-\njavax.xml.stream.XMLStreamException: DS Code: VALIDATION_ERROR\nSource Data Service:-\nName: WSO2_COLLATERALINFO\nLocation: \\WSO2_COLLATERALINFO.dbs\nDescription: N/A\nDefault Namespace: http://ws.wso2.org/dataservice\nCurrent Request Name: getCollateralInfo\nCurrent Params: {RegisterID=, Description=, AccountID=, Email=, RequestId=WSO2123456789, Telephone=, NationalID=, ProductID=, CustomerID=, CollateralType=, Source=WSO2, CollateralCode=COL0001843201, Function=CollateralInfo, LiabilityID=, UserId=egateway, CustomerName=, SecurityCode=B42B54464D1DF6000A3CA026BB2C6C0, RequestType=R}\nNested Exception:-\nSECURITYCODE  буруу байна!!! \nField Name: SecurityCode\nField Value: B42B54464D1DF6000A3CA026BB2C6C0\n\n"
        }
    }

Как к этому?

1 Ответ

0 голосов
/ 03 июля 2019

Вы можете попробовать заменить регулярное выражение в сообщении errorMessage и сохранить результат в свойстве следующим образом.

<property name="securityCode" expression="replace(//errorMessage, '.*(SECURITYCODE.*?)\\.*', '$1')"/>

Имейте в виду, что вам, возможно, придется включить xpath 2.0 в EI, чтобы использовать расширенные функции xpath. Это можно сделать, установив для свойства synapse.xpath.dom.failover.enabled значение true в файле synapse.properties.

Другое регулярное выражение может быть: .*Nested Exception:-\\n(.*?)\\n.* По сути, регулярное выражение совпадает со всей строкой, если оно содержит исключение Nested, за которым следует новая строка, затем все, что вы хотите перехватить, и еще одна новая строка. Захват выполняется с использованием круглых скобок, при этом создается группа захвата, которую вы повторно используете при замене на $ 1 (который ссылается на первую группу захвата, $ 2 на вторую и т. Д.)

Вы можете настроить это в соответствии с требованиями / форматом errorMessage.

Для проверки ваших регулярных выражений вы всегда можете использовать regex101.com

...