1 Escaping von Sonderzeichen aus LLD-Makrowerten in JSONPath

Wenn Low-Level-Discovery-Makros in der JSONPath-Vorverarbeitung verwendet werden und ihre Werte aufgelöst werden, gelten die folgenden Regeln für das Escaping von Sonderzeichen:

  • nur Backslash-Zeichen (\) und doppelte Anführungszeichen (") werden beim Escaping berücksichtigt;
  • wenn der aufgelöste Makrowert diese Zeichen enthält, wird jedes von ihnen mit einem Backslash escaped;
  • wenn sie bereits mit einem Backslash escaped sind, wird dies nicht als Escaping betrachtet und sowohl der Backslash als auch die folgenden Sonderzeichen werden erneut escaped.

Zum Beispiel:

JSONPath LLD-Makrowert Nach der Ersetzung
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

Bei Verwendung im Ausdruck sollte das Makro, das Sonderzeichen enthalten kann, in doppelte Anführungszeichen eingeschlossen werden:

JSONPath LLD-Makrowert Nach der Ersetzung Ergebnis
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Ungültiger JSONPath-Ausdruck

Bei Verwendung im Pfad sollte das Makro, das Sonderzeichen enthalten kann, in eckige Klammern und doppelte Anführungszeichen eingeschlossen werden:

JSONPath LLD-Makrowert Nach der Ersetzung Ergebnis
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Ungültiger JSONPath-Ausdruck