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

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

  • 仅反斜杠 (\) 和双引号 (") 字符被视为特殊字符 用于转义;

  • 如果解析后的宏值包含这些字符,则每个字符 使用反斜杠进行转义;

  • 如果它们已经被反斜杠转义,则不予考虑

    as escaping and both the backslash and the following special characters are escaped once again.

例如:

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

当在路径中使用可能包含特殊字符的宏时 需用方括号双引号括起:

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