1. Экранирование спецсимволов из значений LLD макросов в JSONPath
Когда в предварительной обработке JSONPath используются макросы низкоуровневого обнаружения и их значения раскрываются, применяются следующие правила экранирования спецсимволов:
- для экранирования учитываются только символы обратной косой черты (\) и двойной кавычки (");
- если раскрытое значение макроса содержит эти символы, каждый из них экранируется при помощи обратной косой черты;
- если эти символы уже экранированы при помощи обратной косой черты, такая запись не считается экранированием и как косая черта, так и последующие спецсимволы будут экранированы еще раз.
Например:
| JSONPath | Значение LLD макроса | После подстановки |
|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] |
| c:\temp | $.[?(@.value == "c:\\temp")] | |
| a\\b | $.[?(@.value == "a\\\\b")] |
Макрос, который может иметь спецсимволы, при использовании в выражении необходимо заключить в двойные кавычки:
| JSONPath | Значение LLD макроса | После подстановки | Результат |
|---|---|---|---|
| $.[?(@.value == "{#MACRO}")] | special "value" | $.[?(@.value == "special \"value\"")] | OK |
| $.[?(@.value == {#MACRO})] | $.[?(@.value == special \"value\")] | Плохое JSONPath выражение |
Макрос который может иметь спецсимволы, при использовании в пути необходимо заключить в квадратные скобки и двойные кавычки:
| JSONPath | Значение LLD макроса | После подстановки | Результат |
|---|---|---|---|
| $.["{#MACRO}"].value | c:\temp | $.["c:\\temp"].value | OK |
| $.{#MACRO}.value | $.c:\\temp.value | Плохое JSONPath выражение |