2016-08-16 4 views
9

'http'커넥터와 'If'조건 활동을 포함하는 로직 앱을 만들었습니다. 'http'커넥터는 'json'결과, 즉 jsonObj을 반환합니다.Azure Logic App의 'if'조건문에서 'null'체크하는 법

@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' 

답변

5

내가 직접 null 또는 undefined에 대해 테스트 겠다는 방법을 발견하지 못했지만 예제를 들어 coalesce

... 
"propExists": "@equals(coalesce(triggerBody()?.prop, 'Fallback42'), 'Fallback42')" 
... 

에 대한 대체로서 충분한 '임의'문자열을 선택할 때 다음과 같은 해결 방법은 작동합니다 Logic App 다음에 속성 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": null, 
    "propNull": true 
} 
6

에서

{ 
    "propOther": "test" 
} 

결과를 요구하는 반면

{ 
    "prop": "test", 
    "propNull": false 
} 

에서

{ 
    "prop": "test" 
} 

결과 요청이 이제 수행 할 수 있습니다

@equal(triggerBody()['jsonObj']?['someProperty'], null) 

유효하고 저장 가능하지만 기본 모드로 전환하려고하면 오류가 발생합니다. 그래도 저장할 수 있습니다.

+0

이제 오류가 발생하지 않고 기본 모드로 전환 할 수 있어야합니다. Null 값은 기본 모드로 표시 될 때 값이 null 인 표현 토큰으로 변환됩니다. –