[comment]: # ({718d4303-c19f94bc})
# 转义JSONPath中的LLD宏值中的特殊字符

当JSONPath预处理中使用低级发现宏并解析它们的值时，将应用以下特殊字符转义规则:

-   只考虑转义反斜杠(\\)和双引号(")字符;
-   如果解析的宏值包含这些字符，每个字符都用反斜杠转义;
-   如果解析的宏值包含这些字符，则每个字符都用反斜杠进行转义;

```{=html}
<!-- -->
```
    *如果它们已经用反斜杠转义，则不认为是转义，并且反斜杠和以下特殊字符将再次转义。
    *

例子:

|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\\")\]|**Bad JSONPath expression**|

当在路径中使用宏时，可能有特殊字符的宏应该用方括号**和**双引号括起来:

|JSONPath|LLD宏值    替|后                     结果|<|
|--------|----------------|------------------------------|-|
|$.\["{\#MACRO}"\].value|c:\\temp|$.\["c:\\\\temp"\].value|OK|
|$.{\#MACRO}.value|^|$.c:\\\\temp.value|**Bad JSONPath expression**|

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