Escapowanie znaków specjalnych z wartości makr LLD w JSONPath
Gdy makra wykrywania niskiego poziomu są używane w przetwarzaniu JSONPath i ich wartości są rozwijane, stosowane są następujące zasady escapowania znaków specjalnych:
- tylko znak ukośnika odwrotnego (\) i cudzysłowu (") są brane pod uwagę przy escapowaniu;
- jeśli rozwinięta wartość makra zawiera te znaki, każdy z nich jest poprzedzany ukośnikiem odwrotnym;
- jeśli są już poprzedzone ukośnikiem odwrotnym, nie jest to traktowane jako escapowanie i zarówno ukośnik odwrotny, jak i następujące po nim znaki specjalne są escapowane ponownie.
Na przykład:
| JSONPath | LLD macro value | After substitution |
|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] |
| c:\temp | $.[?(@.value == "c:\\temp")] | |
| a\\b | $.[?(@.value == "a\\\\b")] |
Gdy makro jest używane w wyrażeniu, makro, które może zawierać znaki specjalne, powinno być ujęte w cudzysłów:
| JSONPath | LLD macro value | After substitution | Result |
|---|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] | OK |
| $.[?(@.value == {#MACRO})] | $.[?(@.value == special \"value\")] | Bad JSONPath expression |
Gdy makro jest używane w ścieżce, makro, które może zawierać znaki specjalne, powinno być ujęte w nawiasy kwadratowe i cudzysłów:
| JSONPath | LLD macro value | After substitution | Result |
|---|---|---|---|
| $.["{#MACRO}"].value | c:\temp | $.["c:\\temp"].value | OK |
| $.{#MACRO}.value | $.c:\\temp.value | Bad JSONPath expression |