1 从JSONPath中的LLD宏值转义特殊字符

当在 JSONPath 预处理中使用低级别自动发现(LLD)宏,并解析其值时,将应用以下转义特殊字符的规则:

  • 仅反斜杠(\)和双引号(")字符需要转义;
  • 如果解析后的宏值包含这些字符,则每个字符都会使用反斜杠进行转义;
  • 如果这些字符已经被反斜杠转义,则不会视为有效转义,反斜杠和后续的特殊字符都会再次被转义。

例如:

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 表达式