1 Escape de caracteres especiais em valores de macro LLD no JSONPath

Quando macros de descoberta de baixo nível (LLD) são usadas em pré-processamento 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 é escapado com uma barra invertida;
  • se já estiverem escapados com uma barra invertida, isso não é considerado como escape, e tanto a barra invertida quanto os caracteres especiais seguintes são escapados novamente.

Por exemplo:

JSONPath Valor da macro LLD Após substituição
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

Quando usado na expressão, a macro que pode conter caracteres especiais deve ser colocada entre aspas duplas:

JSONPath Valor da macro LLD Após substituição Resultado
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Expressão JSONPath inválida

Quando usado no caminho, a macro que pode conter 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