Escape de caracteres especiales de los valores de macros LLD en JSONPath

Cuando se usan macros de descubrimiento de bajo nivel en el preprocesamiento de JSONPath y se resuelven sus valores, se aplican las siguientes reglas de escape de caracteres especiales:

  • solo se consideran para el escape la barra invertida (\) y las comillas dobles (");
  • si el valor de la macro resuelta contiene estos caracteres, cada uno de ellos se escapa con una barra invertida;
  • si ya están escapados con una barra invertida, no se considera un escape y tanto la barra invertida como los caracteres especiales siguientes se vuelven a escapar una vez más.

Por ejemplo:

JSONPath Valor de la macro LLD Después de la sustitución
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

Cuando se usa en la expresión, la macro que pueda contener caracteres especiales debe ir entre comillas dobles:

JSONPath Valor de la macro LLD Después de la sustitución Resultado
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Expresión JSONPath incorrecta

Cuando se usa en la ruta, la macro que pueda contener caracteres especiales debe ir entre corchetes y comillas dobles:

JSONPath Valor de la macro LLD Después de la sustitución Resultado
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Expresión JSONPath incorrecta