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 |