Ga naar hoofdinhoud

Gegevens selecteren met JSONPath

SHIPM8-sjablonen gebruiken de JSONPath Plus-syntaxis om door gegevens te navigeren. Je kunt expressies testen op jsonpath.com.

Een voorbeeldgegevensstructuur

De voorbeelden op deze pagina maken gebruik van de volgende havenbezoek-JSON:

{
"Data": [
{
"Ct_portcallfile": {
"eta": "2025-07-22T00:00:00",
"port name": "Amsterdam",
"__AdditionalData": {
"ship": {
"name": "Ocean Star"
},
"customer": {
"name": "Blue Tide Shipping",
"member": true,
"company": ""
},
"cargoRegistration": [
{
"cargo": "Crude Oil",
"quantity": 52000,
"blNumber": "BL-2025-001"
}
]
}
}
}
]
}

Waarden ophalen

Gebruik een punt-gescheiden pad binnen {{ }} om een veld te bereiken:

Wat ophalenExpressieResultaat
ETA{{ Data.[0].Ct_portcallfile.eta }}2025-07-22T00:00:00
Havennaam{{ Data.[0].Ct_portcallfile.['port name'] }}Amsterdam
Scheepsnaam{{ Data.[0].Ct_portcallfile.__AdditionalData.ship.name }}Ocean Star
Klantnaam{{ Data.[0].Ct_portcallfile.__AdditionalData.customer.name }}Blue Tide Shipping
Lidvlag{{ Data.[0].Ct_portcallfile.__AdditionalData.customer.member }}True
Bedrijf (leeg){{ Data.[0].Ct_portcallfile.__AdditionalData.customer.company }}(leeg)
Ladingtype{{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0].cargo }}Crude Oil
Ladingshoeveelheid{{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0].quantity }}52000
BL-nummer{{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0].blNumber }}BL-2025-001

Gegevenstypen

JSONPath kan elk standaard JSON-gegevenstype bereiken. Als je rechtstreeks een object of lijst aanwijst, wordt een intern object teruggegeven — zoom altijd in op een scalair veld voor leesbare uitvoer.

TypeVoorbeeldResultaat
String{{ Data.[0].Ct_portcallfile.__AdditionalData.ship.name }}Ocean Star
Getal{{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0].quantity }}52000
Boolean{{ Data.[0].Ct_portcallfile.__AdditionalData.customer.member }}True of False
Null / leeg{{ Data.[0].Ct_portcallfile.__AdditionalData.customer.company }}(leeg)
Object{{ Data.[0].Ct_portcallfile }}System.Dynamic.ExpandoObject — gebruik een specifiek veld
Lijstitem (object){{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0] }}System.Dynamic.ExpandoObject — gebruik .cargo, .quantity, etc.

Lijsten en indexen

Lijstindexen staan tussen vierkante haakjes met een voorafgaande punt: .[0], .[1], etc.

✅ Correct:

{{ Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration.[0].cargo }}

❌ Onjuist:

{{ Data[0].Ct_portcallfile.__AdditionalData.cargoRegistration[0].cargo }}   ← werkt niet

Itereren over een lijst

Wanneer een veld meerdere items bevat (bijv. meerdere ladingregistraties), gebruik je {{#each}} in plaats van een vaste index:

{{#each Data.[0].Ct_portcallfile.__AdditionalData.cargoRegistration}}
Cargo: {{ this.cargo }}, Quantity: {{ this.quantity }}, BL: {{ this.blNumber }}
{{/each}}

Binnen de lus verwijst this naar het huidige item. Gebruik geen .[0]-index binnen een #each — de lus itereert elk item automatisch.


Veldnamen met spaties of speciale tekens

Als een veldnaam spaties bevat, omsluit je deze met vierkante haakjes en enkele aanhalingstekens:

✅ Correct:

{{ Data.[0].Ct_portcallfile.['port name'] }}

❌ Onjuist:

{{ Data.[0].Ct_portcallfile.port name }}   ← werkt niet

Dezelfde haakjesnotatie is vereist voor veldnamen met koppeltekens, punten, of die beginnen met een cijfer:

✅ Correct:

{{ Data.[0].Ct_portcallfile.['arrival-eta'] }}
{{ Data.[0].Ct_portcallfile.['123status'] }}

Een boolean weergeven als Ja / Nee

Booleans worden standaard weergegeven als True / False. Gebruik ifEquals om vriendelijkere tekst te tonen:

{{#ifEquals Data.[0].Ct_portcallfile.__AdditionalData.customer.member true}}
Yes
{{else}}
No
{{/ifEquals}}

Regels om te onthouden

RegelDetail
LijstindexsyntaxisAltijd .[0], nooit [0]
Spaties in veldnamenGebruik ['field name'] haakjesnotatie
Speciale tekens / begincijferZelfde haakjesnotatie: ['arrival-eta'], ['123id']
Één expressie per {{ }}Je kunt geen twee paden combineren in één expressie
Geen voorloopende $De rootcontext wordt impliciet aangenomen; $.Data.[0]... is niet nodig
Hoofdlettergevoeligeta en ETA zijn verschillende velden
Ontbrekende veldenGeven een lege waarde terug — geen foutmelding