JSONParse

Analizza il testo come dati JSON e conserva in memoria la rappresentazione JSON analizzata per consentire all'utente di riutilizzarla con altre funzioni JSON.

Formato 

JSONParse ( json )

Parametri 

json - qualsiasi espressione di testo o campo contenente un oggetto o una matrice JSON.

Tipo di dati riportato 

Testo

Creata nella versione 

22.0

Descrizione 

JSONParse prima valuta l'espressione di testo json di input, quindi analizza il testo JSON e salva una rappresentazione binaria in memoria. Quando JSONParse imposta una variabile, un parametro di script o viene utilizzata in altri calcoli, questa rappresentazione binaria è disponibile per altre funzioni JSON per elaborare i dati analizzati.

JSONParse restituisce il testo originale invariato se json è valido oppure restituisce un messaggio di errore se non è valido. Per JSON non valido, JSONParse restituisce un messaggio di errore che inizia con "?", seguito da dettagli sull'errore di analisi, analogamente ad altre funzioni JSON.

Vedere Ottimizzazione delle prestazioni JSON.

Note 

  • Per operazioni JSON singole, l'utilizzo di altre funzioni JSON direttamente sul testo può funzionare quanto utilizzare JSONParse per primo.

  • È possibile utilizzare la funzione JSONParsedState per verificare se i dati JSON sono stati analizzati con successo e sono validi.

Esempio 1 - Analisi di base di un oggetto JSON semplice

JSONParse ( "{ \"nome\": \"Alea\", \"età\": 30, \"città\": \"New York\" }" ) restituisce { "nome": "Alea", "età": 30, "città": "New York" }, che è la rappresentazione di testo invariata dei dati JSON.

Se impostata su una variabile $$Contatto, la rappresentazione binaria viene salvata in memoria ed è disponibile per i calcoli che utilizzano $$Contatto.

Copia
Dichiara ( [
  $$Contatto = JSONParse ( "{ \"nome\": \"Alea\", \"età\": 30, \"città\": \"New York\" }" )
  ] ;
  $$Contatto
)

Se il JSON non è valido, JSONParse analizza i dati ma restituisce un messaggio di errore. Ad esempio, se manca la prima virgola nel JSON di cui sopra, JSONParse restituisce:

Copia
? * Riga 1, Colonna 18
  Manca ',' o '}' nella dichiarazione oggetto

Esempio 2 - Analisi di più oggetti JSON

Utilizza JSONParse per analizzare il testo JSON in $JSONTesto1 e $JSONTesto2, quindi recupera elementi dalle variabili $JSONAnalizzato1 e $JSONAnalizzato2 senza comportare una nuova analisi dei dati JSON.

Copia
Imposta variabile [ $JSONAnalizzato1 ; Valore: JSONParse ( $JSONTesto1 ) ]
Imposta variabile [ $JSONAnalizzato2 ; Valore: JSONParse ( $JSONTesto2 ) ]
Imposta variabile [ $nome ; Valore: JSONGetElement ( $JSONAnalizzato1 ; "nome" ) ]
Imposta variabile [ $id ; Valore: JSONGetElement ( $JSONAnalizzato2 ; "id" ) ]
Imposta variabile [ $categoria ; Valore: JSONGetElement ( $JSONAnalizzato1 ; "categoria" ) ]

Esempio 3 - Controllo degli errori e utilizzo del JSON analizzato in un loop

Dimostra il controllo degli errori e mostra come utilizzare JSONParse per migliorare le prestazioni quando si elaborano più elementi degli stessi dati JSON in un loop. $$JSON contiene il testo JSON nei Dati JSON di esempio. Dopo che lo script analizza $$JSON, controlla se il JSON analizzato è valido (quando la funzione JSONParsedState restituisce un valore positivo). Se il JSON analizzato è valido, lo script viene eseguito in modo ciclico sull'array panificio.prodotto e ottiene valori dai dati JSON già analizzati.

Copia
Imposta variabile [ $JSONAnalizzato ; Valore: JSONParse ( $$JSON ) ]
If [ JSONParsedState ( $JSONAnalizzato ) > 0 ]
   # JSON è valido. Utilizza il JSON analizzato per più operazioni. Imposta variabile [ $ConteggioProdotti ; Valore: ConteggioValore ( JSONListKeys ( $JSONAnalizzato ; "panificio.prodotto" ) ) ]
   Imposta variabile [ $i ; Valore: 0 ]
   Loop [ Scarica: Sempre ]
      Imposta variabile [ $Prodotto ; Valore: JSONGetElement ( $JSONAnalizzato ; "panificio.prodotto[" & $i & "]" ) ]
      Imposta variabile [ $NomeProdotto ; Valore: JSONGetElement ( $Prodotto ; "nome" ) ]
      Imposta variabile [ $PrezzoProdotto ; Valore: JSONGetElement ( $Prodotto ; "prezzo" ) ]
      # Elabora dati prodotto...
      Imposta variabile [ $i ; Valore: $i + 1 ]
      Exit Loop If [ $i ≥ $ConteggioProdotti ]
   End Loop
Else
   # Gestisci errore analisi JSON
   Mostra finestra personalizz. [ "Errore JSON" ; $JSONAnalizzato ]
End If