Azure 逻辑应用程序是否支持 JSON 架构验证中的 oneOf、anyOf

Do Azure Logic Apps support oneOf, anyOf in JSON schema validation

我试图在使用 ParseJSON 操作的逻辑应用程序中添加 JSON 模式验证。 我想验证消息中任一对象的存在(相当于 XSD 选择)。

例如,消息可能有姓氏或姓氏。

{
"name": "Alan",
"familyname": "Turing"
}

{
"name": "Alan",
"lastname": "Turing"
}

我将生成的模式修改为,

{
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "oneOf": [
            {
                "lastname": {
                    "type": "string"
                }
            },
            {
                "familyname": {
                    "type": "string"
                }
            }
        ]
    }
}

逻辑应用程序执行抛出以下错误

只是为了测试任何其他架构组合关键字是否有效,尝试用 anyOf 代替 oneOf 进行测试,但执行失败还有。

逻辑应用程序是否支持这些扩展验证?我在这里缺少一些特定的语法吗?

如果您要验证 familyname 或 lastname 是否存在,那么您缺少 "required" 属性。

{
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        }
    },
    "oneOf": [
        {
            "familyname": {
                "type": "string"
            },
            "required": [ "familyname" ]
        },
        {
            "lastname": {
                "type": "string"
            },
            "required": [ "lastname" ]
        }
    ]
}

这将验证 JSON。如果你想在后面的步骤中得到这些值,你可以使用 coalesce 函数。

@coalesce(actionBody('Parse_JSON')?['familyname'], actionBody('Parse_JSON')?['lastname'])