Escape dei caratteri speciali dai valori delle macro LLD in JSONPath

Quando le macro di discovery a basso livello vengono usate nel preprocessing JSONPath e i loro valori vengono risolti, si applicano le seguenti regole di escape dei caratteri speciali:

  • solo il backslash (\) e il carattere di doppia virgoletta (") vengono considerati per l'escape;
  • se il valore della macro risolto contiene questi caratteri, ciascuno di essi viene preceduto da un backslash;
  • se sono già preceduti da un backslash, questo non viene considerato un escape e sia il backslash sia i caratteri speciali successivi vengono nuovamente escapati una sola volta.

Ad esempio:

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

Quando viene usata nell'espressione, la macro che può contenere caratteri speciali deve essere racchiusa tra doppie virgolette:

JSONPath LLD macro value After substitution Result
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Bad JSONPath expression

Quando viene usata nel percorso, la macro che può contenere caratteri speciali deve essere racchiusa tra parentesi quadre e doppie virgolette:

JSONPath LLD macro value After substitution Result
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Bad JSONPath expression