[comment]: # translation:outdated

[comment]: # ({2a528a18-c19f94bc})
# 1 从JSONPath 中的 LLD 宏值中转义特殊字符

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

在路径中使用时，可能包含特殊字符的宏应括在方括号 **和** 双引号中：

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

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