J'ai créé une application logique qui contient un déclencheur, un connecteur 'http' puis une activité de condition 'If'. Le connecteur 'http' renvoie un résultat 'json' disons jsonObj
.
Je peux vérifier la condition en tant que @equal(body('HTTP')['jsonObj'].someProperty,'someValue')
mais pas en mesure de faire une vérification de null
sur cette valeur de someProperty
.
Voici quelques méthodes que j'ai essayées et qui ne fonctionnent pas.
@equal(body('HTTP')['jsonObj'].someProperty, null) --Unable to save
@equal(body('HTTP')['jsonObj']?.someProperty,'null') --Comparing with string value 'null'
Je n'ai pas trouvé de véritable moyen de tester directement contre null
ou undefined
mais la solution de contournement suivante devrait fonctionner lors du choix d'une chaîne "aléatoire" suffisante comme solution de remplacement pour le coalesce
...
"propExists": "@equals(coalesce(triggerBody()?.prop, 'Fallback42'), 'Fallback42')"
...
Par exemple, l'application logique suivante renvoie la propriété prop
et indique si elle a été spécifiée ou non
{
"$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"
}
}
}
de sorte qu'une demande avec
{
"prop": "test"
}
résulte en
{
"prop": "test",
"propNull": false
}
alors qu'une demande
{
"propOther": "test"
}
résulte en
{
"prop": null,
"propNull": true
}
Vous pouvez désormais:
@equals(triggerBody()['jsonObj']?['someProperty'], null)
Il est valide et peut être enregistré, mais si vous essayez de passer en mode de base, vous obtiendrez une erreur. Peut encore économiser cependant.