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