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.

Kopiera
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:

Kopiera
? * 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.

Kopiera
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.

Kopiera
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