JSONParse
Parsar text som JSON-data och behåller den parsade JSON-representationen i minnet åt dig för återanvändning med andra JSON-funktioner.
Format
JSONParse ( json )
Parametrar
json
– ett textuttryck eller fält som innehåller ett JSON-objekt eller -matris.
Returnerad datatyp
text
Ursprungsversion
22.0
Beskrivning
JSONParse utvärderar först det inmatade JSON
-textuttrycket, parsar sedan JSON-texten och cachelagrar en binär representation i minnet. När JSONParse anger en variabel, scriptparameter eller används i andra beräkningar är binära representationen tillgänglig för andra JSON-funktioner för att bearbeta parsade data.
JSONParse returnerar den ursprungliga texten oförändrad om json
är giltigt, eller returnerar ett felmeddelande om ogiltigt. För ogiltiga JSON returnerar JSONParse ett felmeddelande som börjar med ”?” följt av uppgifter om parsningsfelet, liknande andra JSON-funktioner.
Mer information finns i Optimera JSON-prestanda.
Kommentarer
-
För enkla JSON-operationer kan det fungera både att använda andra JSON-funktioner direkt på texten såväl som att använda JSONParse först.
-
Du kan använda Funktionen JSONParsedState för att kontrollera om JSON-data har parsats och är giltiga.
Exempel 1 - Grundläggande parsning av ett enkelt JSON-objekt
JSONParse ( "{ \"namn\": \"Alea\", \"ålder\": 30, \"ort\": \"Stockholm\" }" )
returnerar { "namn": "Alea", "ålder": 30, "ort": "Stockholm" }, vilket alltså är den oförändrade textrepresentationen av JSON-data.
Om variabel $$Kontakt anges, cachelagras den binära representationen i minnet och är tillgänglig för beräkningar som använder $$Kontakt.
Let ( [
$$Kontakt = JSONParse ( "{ \"namn\": \"Alea\", \"ålder\": 30, \"ort\": \"Stockholm\" }" )
] ;
$$Kontakt
)
Om JSON är ogiltigt parsar JSONParse data men returnerar ett felmeddelande. Om till exempel det första kommatecknet saknas i JSON ovan, returnerar JSONParse:
? * Line 1, Column 18
Missing ',' or '}' in object declaration
Exempel 2 - Parsning av flera JSON objekt
Använder JSONParse för att parsa JSON-text i $JSONText1 och $JSONText2, hämtar sedan element från variablerna $ParsadJSON1 och $ParsadJSON2 utan att JSON-data parsas igen.
Ange variabel [ $ParsadJSON1 ; Värde: JSONParse ( $JSONText1 ) ]
Ange variabel [ $ParsedJSON2 ; Värde: JSONParse ( $JSONText2 ) ]
Ange variabel [ $namn ; Värde: JSONGetElement ( $ParsadJSON1 ; "namn" ) ]
Ange variabel [ $id ; Värde: JSONGetElement ( $ParsadJSON2 ; "id" ) ]
Ange variabel [ $kategori ; Värde: JSONGetElement ( $ParsadJSON1 ; "kategori" ) ]
Exempel 3 - Felsökning och användning av parsad JSON i en loop
Visar felsökning och hur man kan använda JSONParse för att förbättra prestanda vid bearbetning av flera element från samma JSON-data i en loop. $$JSON innehåller JSON-texten i Exempel på JSON-data. När scriptet har parsat $$JSON kontrollerar det om det parsade JSON är giltigt (när Funktionen JSONParsedState returnerar ett positivt värde). Om det parsade JSON är giltigt, loopar scriptet genom matrisen bageri.produkt
och hämtar värden från de redan parsade JSON-data.
Ange variabel [ $ParsedJSON ; Värde: JSONParse ( $$JSON ) ]
If [ JSONParsedState ( $ParsadJSON ) > 0 ]
# JSON är giltigt. Använd parsad JSON för flera operationer.
Ange variabel [ $ProduktAntal ; Värde: VärdeAntal ( JSONListKeys ( $ParsadJSON ; "bageri.produkt" ) ) ]
Ange variabel [ $i ; Värde: 0 ]
Loop [ Rensa: Alltid ]
Ange variabel [ $Produkt ; Värde: JSONGetElement ( $ParsadJSON ; "bageri.produkt[" & $i & "]" ) ]
Ange variabel [ $ProduktNamn ; Värde: JSONGetElement ( $Produkt ; "namn" ) ]
Ange variabel [ $ProduktPris ; Värde: JSONGetElement ( $Produkt ; "pris" ) ]
# Behandla produktdata...
Ange variabel [ $i ; Värde: $i + 1 ]
Exit Loop If [ $i ≥ $ProduktAntal ]
End Loop
Else
# Hantera JSON-parsningsfel
Visa anpassad dialogruta [ "JSON-fel" ; $ParsadJSON ]
End If