Modèle d'objet LIRE_JSON

A partir de la version 11.00.

 

Ce modèle permet d'interpréter une chaîne au format JSON. Ce format est une représentation de la structure et des données d'un objet Javascript en texte lisible. Il est très utilisé dans les services et API web pour transmettre des données, tout comme le format XML. Mais si son utilisation en Javascript est naturelle, ce n'est pas le cas dans les autres langages de programmation.

Un JSON commence généralement par un noeud de type 'objet' puis contient des noeuds enfants de type chaîne, booléen, numérique, tableau, null ou un autre objet de manière hiérarchique.

 

Contrairement au modèle XMLIMPORT, LIRE_JSON n'effectue pas un import direct dans une table de données. La structure des JSON est rarement en forme de grille parfaite. Il n'existe pas (encore ; en version 11.01) de modèle pour écrire du JSON.

Chargement du contenu JSON

Avant toute chose, déclarer la variable héritée Json qui recevra le JSON à analyser :

VARIABLES : Chaine Heritee Json
 

Pour charger le JSON, si vous possédez un fichier sur le disque, vous pouvez utiliser la méthode :

AppliquerMethodeComposant SYSASCII.LIRE_FICHIER (vCheminFichier, json)

 

Si vous devez lire le résultat depuis une API web, vous pouvez utiliser le composant Msxml2.XMLHTTP.3.0. Exemple :

CreerContexteComposantCom "Msxml2.XMLHTTP.3.0","XMLHTTP"

ConnecterComposantCom "XMLHTTP"

// Lancer une requête http vers une url :

AppliquerMethodeComposantCom "XMLHTTP"."open" ("GET", vURL, 0)

AppliquerMethodeComposantCom "XMLHTTP"."send"

// Pour attendre le résultat, qui peut prendre plusieurs secondes faire une boucle avec :

AppliquerMethodeComposantComGet "XMLHTTP"."readyState" (readyState)

// quand readyState a la valeur 4, c'est que le serveur a répondu.

// On peut vérifier le statut de la réponse http (200=OK, 500=erreur serveur etc) avec 

AppliquerMethodeComposantComGet "XMLHTTP"."status" (status)

// Enfin, stocker le résultat dans la variable json :

AppliquerMethodeComposantComGet "XMLHTTP"."responseText" (Json)
 

Une fois la chaine json remplie correctement, appeler la méthode qui charge la structure en mémoire :

AppliquerMethode Charger
 

Deux modes de fonctionnement

  1. La méthode ENUMERER parcourt l'ensemble du JSON et déclenche un évènement pour chaque élément trouvé. C'est la méthode à privilégier si la structure est suceptible de changer et si on veut lire la totalité de l'objet.
  2. La lecture directe d'un élément, à répéter pour chaque élément voulu. Fonctionnement à privilégier si on ne souhaite lire que quelques valeurs et qu'on maîtrise la structure.

La méthode ENUMERER

Une fois la méthode Enumerer appelée, vous recevrez les évènements suivants selon le type de chaque noeud rencontré séquentiellement :

Methode JSON_NULL    Parametres : Entier niveau; Chaine nom

Methode JSON_ERREUR    Parametres : Entier niveau; Chaine nom

Methode JSON_CHAINE    Parametres : Entier niveau; Chaine nom, val

Methode JSON_BOOLEEN    Parametres : Entier niveau; Chaine nom ; Entier val

Methode JSON_NUMERIQUE    Parametres : Entier niveau; Chaine nom ; Double val

Methode JSON_TABLEAU    Parametres : Entier niveau; Chaine nom

Methode JSON_OBJET    Parametres : Entier niveau; Chaine nom

Les méthodes de lecture directe

Appeler successivement les méthodes pour naviguer dans la structure (avec LireObjet) et lire les valeurs des noeuds.

En cas d'erreur pour chacune de ces méthodes, ErreurRendue sera à 1.

Methode LireObjet

    Parametres : Chaine pCle
Se positionne sur un objet via son nom.
On peut descendre dans les enfants en les ajoutant via le séparateur ':'.
Si pCle commence par ':', on résout depuis la racine sinon on tient compte
de la position précédente. Alternative : laisser le paramètre vide pour revenir à la racine.
Si l'objet est un tableau, on pointe sur son premier élément.

Methode LireChaine

    Parametres :
        Chaine Reference pValeur
        Chaine pCle
Lit la valeur de la clé indiquée.
Si la clé n'est pas à la racine, utiliser auparavant LireObjet.

Methode LireNumerique

    Parametres :
        Double Reference pValeur
        Chaine pCle
Lit la valeur de la clé indiquée.
Si la clé n'est pas à la racine, utiliser auparavant LireObjet.

Methode LireBooleen

    Parametres :
        Entier Reference pValeur
        Chaine pCle
Lit la valeur de la clé indiquée.
Si la clé n'est pas à la racine, utiliser auparavant LireObjet.

Methode LireTableauSuivant

Lit le prochain élément d'un tableau.

Il ne faut pas appeler cette méthode pour le premier élément d'un tableau.
Si la clé n'est pas à la racine, utiliser auparavant LireObjet.
 

Exemple

Exemple de contenu JSON

 

 

Variables :

   Chaine vTitre, vAuteur

   Double vPrix

AppliquerMethode LireObjet ("results")

// quand on rentre dans un tableau, on pointe directement sur son premier élément

AppliquerMethode LireChaine (vTitre, "titre")

AppliquerMethode LireNumerique (vPrix, "prix")

AppliquerMethode LireTableauSuivant

Si ErreurRendue Alors

   // pas d'autre élément dans le tableau

   Quitter

FinSi