JSONParse
Parseert tekst als JSON-gegevens en houdt de geparseerde JSON-weergave in het geheugen zodat u deze kunt hergebruiken met andere JSON-functies.
Opmaak
JSONParse ( json )
Parameters
json
- een tekstuitdrukking of een veld dat een JSON-object of een array bevat.
Resulterend gegevenstype
tekst
Afkomstig uit versie
22.0
Beschrijving
JSONParse evalueert eerst de ingevoerde json
-tekstexpressie, parseert vervolgens de JSON-tekst en slaat een binaire weergave in het geheugen op. Wanneer JSONParse een variabele of scriptparameter instelt, of wordt gebruikt in andere berekeningen, is deze binaire weergave beschikbaar voor andere JSON-functies om de geparseerde gegevens te verwerken.
JSONParse retourneert de oorspronkelijke tekst ongewijzigd als json
geldig is, of geeft een foutmelding als deze ongeldig is. Voor ongeldige JSON retourneert JSONParse een foutbericht dat begint met '?', gevolgd door details over de parseringsfout, vergelijkbaar met andere JSON-functies.
Zie JSON-prestaties optimaliseren.
Opmerkingen
-
Voor enkelvoudige JSON-bewerkingen kan het gebruik van andere JSON-functies rechtstreeks op de tekst worden uitgevoerd en kan JSONParse eerst worden gebruikt.
-
U kunt de JSONParsedState functie gebruiken om te controleren of JSON-gegevens zijn geparseerd en geldig zijn.
Voorbeeld 1 - Basisparsering van een eenvoudig JSON-object
JSONParse ( "{ \"naam\": \"Alea\", \"leeftijd\": 30, \"woonplaats\": \"New York\" }" )
retourneert { "naam": "Alea", "leeftijd": 30, "woonplaats": "New York" }, wat de ongewijzigde tekstweergave is van de JSON-gegevens.
Als deze optie is ingesteld op een variabele $$Contact, wordt de binaire weergave in het geheugen opgeslagen en beschikbaar voor berekeningen die $$Contact gebruiken.
Let ( [
$$Contact = JSONParse ( "{ \"naam\": \"Alea\", \"leeftijd\": 30, \"woonplaats\": \"New York\" }" )
] ;
$$Contact
)
Als de JSON ongeldig is, parseert JSONParse de gegevens, maar wordt er een foutbericht weergegeven. Als de eerste komma bijvoorbeeld ontbreekt in de bovenstaande JSON, retourneert JSONParse het volgende:
? * Regel 1, Kolom 18
Ontbreekt ',' of '}' in objectdeclaratie
Voorbeeld 2 - Meerdere JSON-objecten parseren
Gebruikt JSONParse om JSON-tekst in $JSONText1 en $JSONText2 te parseren, haalt vervolgens elementen op uit de variabelen $ParsedJSON1 en $ParsedJSON2 zonder dat de JSON-gegevens opnieuw worden geparseerd.
Variabele instellen [ $ParsedJSON1 ; Waarde: JSONParse ( $JSONText1 ) ]
Variabele instellen [ $ParsedJSON2 ; Waarde: JSONParse ( $JSONText2 ) ]
Variabele instellen [ $name ; Waarde: JSONGetElement ( $ParsedJSON1 ; "naam" ) ]
Variabele instellen [ $id ; Waarde: JSONGetElement ( $ParsedJSON2 ; "id" ) ]
Variabele instellen [ $category ; Waarde: JSONGetElement ( $ParsedJSON1 ; "categorie" ) ]
Voorbeeld 3 - Foutcontrole en het gebruik van geparseerde JSON in een lus
Demonstreert foutcontrole en laat zien hoe JSONParse kan worden gebruikt om de prestaties te verbeteren bij het verwerken van meerdere elementen uit dezelfde JSON-gegevens in een lus. $$JSON bevat de JSON-tekst in het Voorbeeld van JSON-gegevens. Nadat het script $$JSON parseert, controleert het of de geparseerde JSON geldig is (wanneer de JSONParsedState functie een positieve waarde retourneert). Als de geparseerde JSON geldig is, doorloopt het script de bakery.product
-array en krijgt het waarden van de reeds geparseerde JSON-gegevens.
Variabele instellen [ $ParsedJSON ; Waarde: JSONParse ( $$JSON ) ]
If [ JSONParsedState ( $ParsedJSON ) > 0 ]
# JSON is geldig. Gebruik de geparseerde JSON voor meerdere bewerkingen.
Variabele instellen [ $ProductCount ; Waarde: ValueCount ( JSONListKeys ( $ParsedJSON ; "bakery.product" ) ) ]
Variabele instellen [ $i ; Waarde: 0 ]
Loop [ Wissen: Altijd ]
Variabele instellen [ $Product ; Waarde: JSONGetElement ( $ParsedJSON ; "bakery.product[" & $i & "]" ) ]
Variabele instellen [ $ProductName ; Waarde: JSONGetElement ( $Product ; "naam" ) ]
Variabele instellen [ $ProductPrice ; Waarde: JSONGetElement ( $Product ; "price" ) ]
# Productgegevens verwerken...
Variabele instellen [ $i ; Waarde: $i + 1 ]
Exit Loop If [ $i ≥ $ProductCount ]
End Loop
Else
# Handle JSON parsing error
Aangepast dialoogvenster tonen [ "JSON-fout" ; $ParsedJSON ]
End If