如何对Azure Logic App的"if"条件操作进行"空"检查

San*_*ini 11 json azure azure-logic-apps

我创建了一个逻辑应用程序,其中包含一些触发器,一个'http'连接器,然后是一个'If'条件活动.'http'连接器返回'json'结果说jsonObj.

我能够检查条件,@equal(body('HTTP')['jsonObj'].someProperty,'someValue')但无法null检查该someProperty值.

以下是我试过的一些不起作用的方法.

@equal(body('HTTP')['jsonObj'].someProperty, null) --Unable to save
@equal(body('HTTP')['jsonObj']?.someProperty,'null') --Comparing with string value 'null'
Run Code Online (Sandbox Code Playgroud)

Chr*_*777 10

你现在可以这样做:

 @equals(triggerBody()['jsonObj']?['someProperty'], null)
Run Code Online (Sandbox Code Playgroud)

它是有效的并且可以保存,但如果您尝试切换到基本模式,则会出现错误.仍然可以保存.

  • 您现在应该能够切换到基本模式而不会出现错误。当以基本模式显示时,null 值将转换为值为 null 的表达式标记。 (2认同)

DAX*_*lic 7

我没有找到一个真正的办法直接对测试nullundefined但选择一个足够的"随机"的字符串作为后备的时候采取以下解决办法应该工作coalesce

...
"propExists": "@equals(coalesce(triggerBody()?.prop, 'Fallback42'), 'Fallback42')"
...
Run Code Online (Sandbox Code Playgroud)

例如,以下逻辑应用程序将回显该属性prop以及它是否实际指定

{
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "actions": {
        "Response": {
            "inputs": {
                "body": {
                    "propNull": "@equals(coalesce(triggerBody()?.prop, 'undefined'), 'undefined')",
                    "prop": "@triggerBody()?.prop"
                },
                "statusCode": 200
            },
            "runAfter": {},
            "type": "Response"
        }
    },
    "contentVersion": "1.0.0.0",
    "outputs": {},
    "parameters": {},
    "triggers": {
        "request": {
            "inputs": {
                "schema": {}
            },
            "kind": "Http",
            "type": "Request"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样一个请求

{
    "prop": "test"
}
Run Code Online (Sandbox Code Playgroud)

结果是

{
  "prop": "test",
  "propNull": false
}
Run Code Online (Sandbox Code Playgroud)

而请求

{
    "propOther": "test"
}
Run Code Online (Sandbox Code Playgroud)

结果是

{
  "prop": null,
  "propNull": true
}
Run Code Online (Sandbox Code Playgroud)