1 Escapar caracteres especiales de valores de macro LLD en JSONPath

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

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

Por ejemplo:

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

Cuando se utiliza en la expresión la macro que puede tener caracteres especiales debe estar entre comillas dobles:

JSONPath Valor de macro LLD Después de la sustitución Resultado
$.[?(@.value == "{#MACRO}")] especial "valor" $.[?(@.value == "especial \"valor\"") ] Aceptar
$.[?(@.value == {#MACRO})] $.[?(@.value == especial \"value\")] JSONPath incorrecto expresión

Cuando se utiliza en la ruta, la macro que puede tener caracteres especiales debe estar entre corchetes y comillas dobles:

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