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 |