Экранирование специальных символов в значениях макросов 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 |