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

当在 JSONPath 预处理中使用底层自动发现宏并解析其值时,将应用以下特殊字符转义规则:

  • 只考虑转义反斜杠(\)和双引号(“)字符;
  • 如果解析的宏值包含这些字符,则每个字符都用反斜杠转义;
  • 如果已使用反斜杠转义,则不会将其视为转义,需要再次使用反斜杠进行转义。

例子:

JSONPathLLD 宏值替换后
$.[?(@.value == “{#MACRO}”)]special “value”$.[?(@.value == “special \”value\””)]
c:\temp$.[?(@.value == “c:\temp”)]
a\b$.[?(@.value == “a\\b”)]

在表达式中使用时,可能有特殊字符的宏应该用双引号括起来:

JSONPathLLD 宏值替换后结果
$.[?(@.value == “{#MACRO}”)]special “value”$.[?(@.value == “special \”value\””)]OK
$.[?(@.value == {#MACRO})]$.[?(@.value == special \”value\”)]Bad JSONPath expression

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

JSONPathLLD 宏值替换后结果
$.[“{#MACRO}”].valuec:\temp$.[“c:\temp”].valueOK
$.{#MACRO}.value$.c:\temp.valueBad JSONPath expression