Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

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