ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
      • Ajout Format JSON
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Index
      • Point de vue sur l'IA
    Format JSON
    • Théorie 2.1: format JSON
      • Les listes en JSON
      • Les objets JSON
      • JSON est un format récursif

    Théorie 2.1: format JSON #

    • Le format JSON est très populaire pour représenter des données

    • JSON veut dire Javascript Object Notation

    • C’est le format prévilégié pour les applications Web

    • Les bases de données NoSQL utilisent souvent un format similaire à JSON

    • Voici les valeurs en JSON:

      • la valeur nulle: null
      • un booléen: true ou false
      • un nombre comme: 1, 4.5, -10.1
      • une chaîne comme: "asdf", "", "Bonjour!"
    • Voici les structures en JSON:

      • une liste comme:
        • [1, 3, -1]
        • []
        • ["asfd", "Bonjour!", ""]
      • une objet comme:
        • {"cle01":true}
        • {}
        • {"cle01":true, "cle02":-12}

    Les listes en JSON #

    • Une liste est un tableau qui peut grandir et rapetisser
    public interface Liste<V extends Object> {
    
    	boolean siVide();
    	
    	int longueur();
    
    	V obtenirValeur(int indice);
    
    	void modifierValeur(int indice, V nouvelleValeur);
    
    	void ajouter(V nouvelleValeur); // la liste grandit
    
    	void retirer(int indice); // la liste rapetisse
    
    	void retirer(V valeur);
    
    }
    
    • Une des particularité des la liste JSON est de mélanger les types de valeurs:
      • [1,true,"Bonjour!"]
      • [null, "", 1, false]

    Les objets JSON #

    • Un objet JSON permet d’accéder à des valeurs avec des clés

      • une clé est toujours une chaîne
      • la valeur peut être n’importe quelle valeur JSON
    • L’objet JSON est un exemple de Dictionnaire:

    public interface Dictionnaire<V extends Object> {
    	
    	void entreposerValeur(String cle, V valeur);
    
    	V recuprerValeur(String cle);
    	
    	String trouverCle(V valeur);
    
    }
    
    • Quand on entrepose une valeur, le dictionnaire:
      • grandit si la clé n’existait pas
      • modifie la valeur si la clé existait
    Dictionnaire<Integer> dico = new MonDictionnaire<>(); 
    
                                         // {}
    dico.entreposerValeur("cle01", 12);  // {"cle01":12}
    dico.entreposerValeur("cle01", 42);  // {"cle01":42}
    dico.entreposerValeur("cle02", 14);  // {"cle01":42, "cle02":14}
    

    JSON est un format récursif #

    • La présentation de JSON à date est incomplète

    • En fait, JSON est un format récursif:

      • on peut avoir [1,2,[2,4]] (une liste à l’intérieur d’une liste)
      • on peut avoir [1,2,[2,[5,423]]]
      • on peut avoir [1,2,[2,[[44,2],423]]]
      • etc.
    • Les structures récursives sont très populaires en informatique

    • Avant de continuer avec JSON, on va regarder la notion d’arbre

    • L’arbre est une structure récursive assez simple

    • On peut penser à une liste récursive comme à un arbre:

      • p.ex: [1,2,[2,[[44,2],423]]]
      • une liste contenant
        • 1
        • 2
        • une liste contenant
          • 2
          • une liste contenant
            • une liste contenant
              • 44
              • 2
            • 423
    • On voit qu’une liste peut être insérée à la place d’une valeur

    • C’est la même chose pour les objets JSON

    • Partout où on s’attend à avoir une valeur, on peut avoir une liste ou un objet

    • Par exemple, voici des données JSON valides:

      • {"cle01":[1,4,true,null,[1,"asdf"],{"test":false}]}
      • [4.0,-2,{"un":1,"deux":2,"trois":{"nom":"Trois"}}]
      • …
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Théorie 2.1: format JSON
      • Les listes en JSON
      • Les objets JSON
      • JSON est un format récursif