Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

Escapando caracteres especiais de valores de macro LLD em 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 caracteres de contrabarra (\) e aspa duplas (") são considerados para escape;
  • se o valor resolvido da macro contém estes caracteres, cada um deles é escapado com uma contrabarra;
  • se eles já estão escapados com uma contrabarra, isto não é considerado como escape e ambos a contrabarra e os caracteres especiais são escapados mais uma vez.

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 usada na expressão a macro que pode conter caracteres especiais deve ser quotada com 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 ruim

Quando usada no caminho (path) a macro que pode conter caracteres especiais deve ser quotada com 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 ruim