1 Escapen van speciale tekens van LLD-macrowaarden in JSONPath

Bij gebruik van laagdrempelige ontdekkingsmacro's (LLD) in JSONPath-voorverwerking en het oplossen van hun waarden, worden de volgende regels voor het ontsnappen van speciale tekens toegepast:

  • Alleen de backslash (\) en het dubbele aanhalingsteken (") worden overwogen voor ontsnapping;
  • Als de opgeloste macrowaarde deze tekens bevat, worden ze elk met een backslash ontsnapt;
  • Als ze al zijn ontsnapt met een backslash, wordt dit niet beschouwd als ontsnapping en worden zowel de backslash als de daaropvolgende speciale tekens opnieuw ontsnapt.

Bijvoorbeeld:

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

Wanneer de macro die speciale tekens kan bevatten in de expressie wordt gebruikt, moet deze worden ingesloten in dubbele aanhalingstekens:

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

Wanneer de macro die speciale tekens kan bevatten in het pad wordt gebruikt, moet deze tussen vierkante haken en dubbele aanhalingstekens worden geplaatst:

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