[comment]: # translation:outdated

[comment]: # ({new-c19f94bc})
# Экранирование спецсимволов из значений LLD макросов в JSONPath

Начиная с Zabbix 4.4.4, когда макросы низкоуровневого обнаружения
используются в 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 выражение**|

[comment]: # ({/new-c19f94bc})
