从 WSO2 MI 检查重复的字段值

问题描述 投票:0回答:1

我有一个 json 输入到 wso2 微积分器。

我想检查一下,我的输入负载有重复的语言值。

例如:

{
    "category": "test-category",
    "displayNames": [
        {
            "language": "en",
            "displayName": "sample",
            "description": "this is a sample"
        }, {
            "language": "de",
            "displayName": "german",
            "description": "this is a german description"
        },
        {
            "language": "en",
            "displayName": "new text",
            "description": "this is a new text"
        }
    ]
}

上面的 json 具有重复的带有“en”值的语言。

首先我尝试使用 json 模式来实现这一点。但我们不能使用 json 模式来验证重复项。

我怎样才能做到这一点?

xml duplicates wso2 wso2-micro-integrator
1个回答
0
投票

如果您知道可以输入的语言,您可以执行如下操作。

<filter xpath="count(//displayNames[language = 'en']) > 1 or count(//displayNames[language = 'de']) > 1">
    <then>
        <log>
            <property name="MSG" value="Duplicate language values"/>
        </log>
    </then>
    <else/>
</filter>

或者你可以执行如下操作。

<property name="langs" scope="default" type="STRING" value=""/>
<foreach expression="json-eval($.displayNames)">
    <sequence>
        <filter xpath="contains($ctx:langs, //language/text())">
                <then>
                    <log>
                        <property name="MSG" value="Duplicate language values"/>
                    </log>
                </then>
                <else>
                    <property expression="concat($ctx:langs, ',', //language/text())" name="langs" scope="default" type="STRING"/>
                </else>
            </filter>
    </sequence>
</foreach>
© www.soinside.com 2019 - 2024. All rights reserved.