【问题标题】:WSO2 EI 6.5.0 get specific string from json-eval expression valueWSO2 EI 6.5.0 从 json-eval 表达式值中获取特定字符串
【发布时间】:2019-07-03 02:22:32
【问题描述】:

我有以下来自数据服务/wso2/的响应

我只想在 errorMessage key 中显示这个字符串(SECURITYCODE буруу байна!!!>):

{
        "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"
        }
    }

如何做到这一点?

【问题讨论】:

    标签: wso2 wso2esb wso2dss wso2ei


    【解决方案1】:

    您可以尝试对 errorMessage 进行正则表达式替换并将结果存储在属性中,如下所示。

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

    请记住,您可能必须在 EI 上启用 xpath 2.0 才能使用高级 xpath 功能。为此,您可以在 synapse.properties 文件中将 synapse.xpath.dom.failover.enabled 属性设置为 true。

    另一个正则表达式可能是:.*Nested Exception:-\\n(.*?)\\n.* 基本上,正则表达式匹配整个字符串,只要它包含嵌套异常后跟换行符,然后是您要捕获的任何内容,然后是另一个换行符。捕获是使用括号完成的,这会创建一个捕获组,您可以在替换为 $1 时重复使用它(它引用第一个捕获组,$2 到第二个等等)

    您可以将其调整为 requirements/errorMessage 格式。

    要测试您的正则表达式,您可以随时使用regex101.com

    【讨论】:

    • 感谢您的回复,如果 SECURITYCODE 必须替换为另一个字符串怎么办?我的意思是如何根据这两个标签(嵌套异常和字段名称)获取字符串嵌套异常:-\nSECURITYCODE буруубайна!!! \n 字段名称:
    • 您可以将正则表达式更改为例如以下内容。这将获取 NestedException 和下一个换行符之间的部分,例如: .*Nested Exception:-\\n(.*?)\\n.*
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多