JSON als script-variabele(n) laden

In het voorbeeld bij dit artikel tref je een custom-function die niets anders doet dan een JSON omzetten in $variabelen. Met deze functie kan je dus heel gemakkelijk het antwoord van een webservice/api omzetten naar scriptvariabelen en die verwerken.

Een JSON kan in de root sleutelnamen hebben die ook in sub-objecten zitten. Vandaar dat deze functie alleen de root omzet en met het resultaat kan je dan weer de functie aanroepen met een namespace, zodat je geen root-variabelen overschrijft.

Er is ook de mogelijkheid ingebakken om sleutelnamen met punten te laden, ook in FMP18.

Ik heb tijdens een van de online meetings van de FileMakerDevelopers Nederland een uitgebreidere versie van de demo laten zien. Deze ging eerst gegevens laden via Execute-DataAPI en volgens werden dan de geladen gegevens gebruikt om records te dupiceren.

Dit voorbeeld is een flink stuk eenvoudiger. Er staat een JSON in een tekstveld en deze wordt vervolgens gebruikt om daarmee variabelen te laden, die je met de data-viewer kan bekijken (zolang het script actief is).

Let op dat je met deze functie geen al te grote payloads gaat laden. Bij enkele tientallen tot honderden objecten is de functie behoorlijk vlot, maar bij duizenden is de maximale capaciteit snel bereikt. Voor het verwerken van een offerte naar een order of een factuur is het echter een gemakkelijke methode.

Je kan een JSON ook in $$-variabelen laden door simpelweg “$” als namespace te gebruiken. De hulpvariabele $max_repetition wordt dan echter niet omgezet, omdat deze geen deel uitmaakt van de JSON, maar alleen aan de functie toebehoort (maar er wordt wel een ge-namespace-de versie geladen) .

Tenslotte: deze functie maakt gebruik van de While()-functie en dus heb je minimaal FileMaker 18 Advanced nodig om te kunnen gebruiken

FMT_JSONparameters_As_Variables_v2

2 reacties op “JSON als script-variabele(n) laden
  1. Menno schreef:

    2 december: iets aangepaste versie in de download neergezet

  2. Menno schreef:

    7 december: sleutelnamen met punten worden nu ook in FMP18 geladen

Top