1 Escapowanie znaków specjalnych z wartości makr LLD w JSONPath
Gdy makra wykrywania niskiego poziomu są używane we wstępnym przetwarzaniu JSONPath i ich wartości są rozwijane, stosowane są następujące reguły escapowania znaków specjalnych:
- tylko znaki backslash (\) i cudzysłów (") są brane pod uwagę przy escapowaniu;
- jeśli rozwinięta wartość makra zawiera te znaki, każdy z nich jest poprzedzany znakiem backslash;
- jeśli są już poprzedzone znakiem backslash, nie jest to traktowane jako escapowanie i zarówno backslash, jak i następujące po nim znaki specjalne są escapowane ponownie.
Na przykład:
| JSONPath | Wartość makra LLD | Po podstawieniu |
|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] |
| c:\temp | $.[?(@.value == "c:\\temp")] | |
| a\\b | $.[?(@.value == "a\\\\b")] |
W przypadku użycia w wyrażeniu makro, które może zawierać znaki specjalne, powinno być ujęte w cudzysłowy:
| JSONPath | Wartość makra LLD | Po podstawieniu | Wynik |
|---|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] | OK |
| $.[?(@.value == {#MACRO})] | $.[?(@.value == special \"value\")] | Nieprawidłowe wyrażenie JSONPath |
W przypadku użycia w ścieżce makro, które może zawierać znaki specjalne, powinno być ujęte w nawiasy kwadratowe oraz cudzysłowy:
| JSONPath | Wartość makra LLD | Po podstawieniu | Wynik |
|---|---|---|---|
| $.["{#MACRO}"].value | c:\temp | $.["c:\\temp"].value | OK |
| $.{#MACRO}.value | $.c:\\temp.value | Nieprawidłowe wyrażenie JSONPath |