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 |