JSONParse

Analyse le texte sous forme de données JSON et conserve la représentation JSON analysée afin que vous puissiez la réutiliser avec d’autres fonctions JSON.

Format 

JSONParse ( json )

Paramètres 

json : une expression ou une rubrique de type Texte qui contient un objet ou un tableau JSON.

Résultat 

Texte

Provient de la version 

22.0

Description 

JSONParse évalue d'abord l'expression de texte json d'entrée, puis analyse le texte JSON et met en cache une représentation binaire. Lorsque JSONParse définit une variable, un paramètre de script, ou est utilisé dans d'autres calculs, cette représentation binaire permet à d'autres fonctions JSON de traiter les données analysées.

JSONParse renvoie le texte d'origine inchangé si json est valide, ou renvoie un message d'erreur s'il n'est pas valide. Pour un JSON invalide, JSONParse renvoie un message d'erreur qui commence par "?" suivi des détails sur l'erreur d'analyse, similaire à d'autres fonctions JSON.

Consultez la section Optimisation des performances JSON.

Remarques 

  • Pour des opérations JSON uniques, l'utilisation d'autres fonctions JSON directement sur le texte est susceptible de fonctionner aussi bien que l'utilisation de JSONParse.

  • Vous pouvez utiliser la fonction JSONParsedState pour vérifier si les données JSON ont été analysées avec succès et sont valides.

Exemple 1 - Analyse de base d'un objet JSON simple

JSONParse ( "{ \"nom\" : \"Alea\", \"âge\" : 30, \"ville\" : \"New York\" }" ) renvoie { "nom" : "Alea", "âge" : 30, "ville" : "New York" }, soit la représentation textuelle inchangée des données JSON.

Si elle est définie sur une variable $$Contact, la représentation binaire est mise en cache et disponible pour les calculs utilisant $$Contact.

Copier
Definir ( [
  $$Contact = JSONParse ( "{ \"nom\": \"Alea\", \"âge\": 30, \"ville\": \"New York\" }" )
  ] ;
  $$Contact
)

Si le JSON n'est pas valide, JSONParse analyse les données mais renvoie un message d'erreur. Par exemple, si la première virgule est manquante dans le JSON ci-dessus, JSONParse renvoie :

Copier
? * Line 1, Column 18
  Missing ',' or '}' in object declaration

Exemple 2 - Analyse de plusieurs objets JSON

Utilise JSONParse pour analyser le texte JSON dans $TexteJSON1 et $TexteJSON2, puis récupère les éléments des variables $JSONAnalysé1 et $JSONAnalysé2 sans que les données JSON ne soient à nouveau analysées.

Copier
Définir variable [ $JSONAnalysé1 ; Valeur: JSONParse ( $TexteJSON1 ) ]
Définir variable [ $JSONAnalysé2 ; Valeur: JSONParse ( $TexteJSON2 ) ]
Définir variable [ $nom ; Valeur: JSONGetElement ( $JSONAnalysé1 ; "nom" ) ]
Définir variable [ $id ; Valeur: JSONGetElement ( $JSONAnalysé2 ; "id" ) ]
Définir variable [ $catégorie ; Valeur: JSONGetElement ( $JSONAnalysé1 ; "catégorie" ) ]

Exemple 3 - Vérification des erreurs et utilisation d'un JSON analysé dans une boucle

Démontre la vérification des erreurs et illustre comment utiliser JSONParse pour améliorer les performances lors du traitement de plusieurs éléments à partir des mêmes données JSON dans une boucle. $$JSON contient le texte JSON de l'Exemple de données JSON. Après que le script analyse $$JSON, il vérifie si le JSON analysé est valide (lorsque la fonction JSONParsedState renvoie une valeur positive). Si le JSON analysé est valide, le script fait une boucle dans le tableau boulangerie.produit et obtient des valeurs à partir des données JSON déjà analysées.

Copier
Définir variable [ $JSONAnalysé ; Valeur: JSONParse ( $$JSON ) ]
Si [ JSONParsedState ( $JSONAnalysé ) > 0 ]
   # JSON est valide. Utilisation du JSON analysé pour plusieurs opérations.
    Définir variable [ $NombreProduit ; Valeur: DecompteValeurs ( JSONListKeys ( $JSONAnalysé ; "boulangerie.produit" ) ) ]
   Définir variable [ $i ; Valeur: 0 ]
   Boucle [ Purge: Systématique ]
      Définir variable [ $Produit ; Valeur: JSONGetElement ( $JSONAnalysé ; "boulangerie.produit[" & $i & "]" ) ]
      Définir variable [ $NomProduit ; Valeur: JSONGetElement ( $Produit ; "nom" ) ]
      Définir variable [ $PrixProduit ; Valeur: JSONGetElement ( $Produit ; "prix" ) ]
      # Traitement des données produit...
      Définir variable [ $i ; Valeur: $i + 1 ]
      Fin de boucle si [ $i ≥ $NombreProduit ]
   Fin de boucle
Sinon
   # Traitement de l'erreur d'analyse JSON
   Ouvrir boîte dial. person. [ "Erreur JSON" ; $JSONAnalysé ]
Fin de si