いくつかのトリガー、「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'
null
またはundefined
を直接テストする実際の方法は見つかりませんでしたが、coalesce
のフォールバックとして十分な「ランダム」文字列を選択すると、次の回避策が機能します。
...
"propExists": "@equals(coalesce(triggerBody()?.prop, 'Fallback42'), 'Fallback42')"
...
たとえば、次のロジックアプリは、プロパティ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"
}
}
}
でのリクエスト
{
"prop": "test"
}
結果は
{
"prop": "test",
"propNull": false
}
一方、
{
"propOther": "test"
}
結果は
{
"prop": null,
"propNull": true
}
これで次のことができます。
@equals(triggerBody()['jsonObj']?['someProperty'], null)
これは有効で保存できますが、基本モードに切り替えようとするとエラーが発生します。まだ保存できます。