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 |