1 Escape dei caratteri speciali dai valori delle macro LLD in JSONPath

Quando le macro di low-level discovery vengono utilizzate nel preprocessing JSONPath e i loro valori vengono risolti, si applicano le seguenti regole di escape dei caratteri speciali:

  • solo i caratteri barra rovesciata (\) e virgolette doppie (") vengono considerati per l'escape;
  • se il valore della macro risolta contiene questi caratteri, ciascuno di essi viene preceduto da una barra rovesciata;
  • se sono già preceduti da una barra rovesciata, ciò non viene considerato come escape e sia la barra rovesciata sia il carattere speciale successivo vengono nuovamente sottoposti a escape.

Per esempio:

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

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

JSONPath Valore macro LLD Dopo la sostituzione Risultato
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Espressione JSONPath non valida

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

JSONPath Valore macro LLD Dopo la sostituzione Risultato
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Espressione JSONPath non valida