Sonderzeichen von LLD-Makrowerten in JSONPath maskieren

Wenn Low-Level-Discovery-Makros in der JSONPath-Vorverarbeitung verwendet werden und ihre Werte aufgelöst werden, gelten die folgenden Regeln zur Maskierung von Sonderzeichen:

  • nur der Backslash (\) und das doppelte Anführungszeichen (") werden für die Maskierung berücksichtigt;
  • wenn der aufgelöste Makrowert diese Zeichen enthält, wird jedes davon mit einem Backslash maskiert;
  • wenn sie bereits mit einem Backslash maskiert sind, gilt dies nicht als Maskierung, und sowohl der Backslash als auch die folgenden Sonderzeichen werden erneut einmal maskiert.

Zum Beispiel:

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

Wenn das Makro im Ausdruck verwendet wird und Sonderzeichen enthalten kann, sollte es in doppelte Anführungszeichen eingeschlossen werden:

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

Wenn das Makro im Pfad verwendet wird und Sonderzeichen enthalten kann, sollte es in eckige Klammern und doppelte Anführungszeichen eingeschlossen werden:

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