1 Escapen van speciale tekens in LLD-macrowaarden in JSONPath

Bij het gebruik van macro's voor low-level discovery (LLD) in JSONPath-voorverwerking en wanneer hun waarden worden opgelost, worden de volgende regels voor het escapen van speciale tekens toegepast:

  • Alleen de backslash (\) en dubbele aanhalingstekens (") worden beschouwd voor escaping;
  • Als de opgeloste macrowaarde deze tekens bevat, worden ze elk met een backslash geëscaped;
  • Als ze al met een backslash zijn geëscaped, wordt dit niet beschouwd als escaping en worden zowel de backslash als de daaropvolgende speciale tekens opnieuw eenmaal geëscaped.

Bijvoorbeeld:

JSONPath LLD-macro-waarde Na substitutie
$.[?(@.value == "{#MACRO}")] speciale "waarde" $.[?(@.value == "speciale \"waarde\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

Bij gebruik in de expressie moet de macro die speciale tekens kan bevatten tussen dubbele aanhalingstekens worden geplaatst:

JSONPath LLD-macro-waarde Na substitutie Resultaat
$.[?(@.value == "{#MACRO}")] speciale "waarde" $.[?(@.value == "speciale \"waarde\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == speciale \"waarde\")] Foute JSONPath-uitdrukking

Bij gebruik in het pad moet de macro die speciale tekens kan bevatten tussen vierkante haken en dubbele aanhalingstekens worden geplaatst:

JSONPath LLD-macro-waarde Na substitutie Resultaat
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Foute JSONPath-uitdrukking