在 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\")] 错误的 JSONPath 表达式

在路径中使用时,可能包含特殊字符的宏应放在方括号 双引号中:

JSONPath LLD 宏值 替换后 结果
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value 错误的 JSONPath 表达式