2022 Zabbix中国峰会
2022 Zabbix中国峰会

转义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