Échappement des caractères spéciaux des valeurs de macro LLD dans JSONPath

Lorsque des macros de découverte de bas niveau sont utilisées dans le prétraitement JSONPath et que leurs valeurs sont résolues, les règles d'échappement des caractères spéciaux suivantes s'appliquent :

  • seul le caractère antislash (\) et le caractère guillemet double (") sont pris en compte pour l'échappement ;
  • si la valeur de macro résolue contient ces caractères, chacun d'eux est échappé avec un antislash ;
  • s'ils sont déjà échappés avec un antislash, cela n'est pas considéré comme un échappement et l'antislash ainsi que les caractères spéciaux suivants sont échappés à nouveau.

Par exemple :

JSONPath Valeur de macro LLD Après substitution
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

Lorsqu'elle est utilisée dans l'expression, la macro qui peut contenir des caractères spéciaux doit être placée entre guillemets doubles :

JSONPath Valeur de macro LLD Après substitution Résultat
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Expression JSONPath incorrecte

Lorsqu'elle est utilisée dans le chemin, la macro qui peut contenir des caractères spéciaux doit être placée entre crochets et entre guillemets doubles :

JSONPath Valeur de macro LLD Après substitution Résultat
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Expression JSONPath incorrecte