1 Escapando caracteres especiais dos valores de macros LLD em JSONPath
Quando macros de descoberta de baixo nível são usadas no pré-processamento de JSONPath e seus valores são resolvidos, as seguintes regras de escape de caracteres especiais são aplicadas:
- apenas os caracteres barra invertida (\) e aspas duplas (") são considerados para escape;
- se o valor da macro resolvida contiver esses caracteres, cada um deles será escapado com uma barra invertida;
- se eles já estiverem escapados com uma barra invertida, isso não é considerado como escape e tanto a barra invertida quanto o caractere especial seguinte são escapados novamente.
Por exemplo:
| JSONPath | Valor da macro LLD | Após substituição |
|---|---|---|
| $.[?(@.value == "{#MACRO}")] | valor "especial" | $.[?(@.value == "valor \"especial\"")] |
| c:\temp | $.[?(@.value == "c:\\temp")] | |
| a\\b | $.[?(@.value == "a\\\\b")] |
Quando usada na expressão, a macro que pode ter caracteres especiais deve ser colocada entre aspas duplas:
| JSONPath | Valor da macro LLD | Após substituição | Resultado |
|---|---|---|---|
| $.[?(@.value == "{#MACRO}")] | valor "especial" | $.[?(@.value == "valor \"especial\"")] | OK |
| $.[?(@.value == {#MACRO})] | $.[?(@.value == valor \"especial\")] | Expressão JSONPath inválida |
Quando usada no caminho, a macro que pode ter caracteres especiais deve ser colocada entre colchetes e aspas duplas:
| JSONPath | Valor da macro LLD | Após substituição | Resultado |
|---|---|---|---|
| $.["{#MACRO}"].value | c:\temp | $.["c:\\temp"].value | OK |
| $.{#MACRO}.value | $.c:\\temp.value | Expressão JSONPath inválida |