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 |