Formats de stockage de données XML et JSON. Format JSON : qu'est-ce que c'est, comment créer et ouvrir un fichier. Développement et application

JSON est un format de texte pour l'enregistrement de données. Il vous permet de représenter sous forme de texte à la fois un nombre ou une chaîne unique et des structures complexes, par exemple des tableaux contenant des données. L'utilisation de ce format d'enregistrement est pratique car il est lisible et intuitif, tout en permettant de stocker des structures de données très complexes. De plus, il est plus compact que XML, donc à mon avis il est plus préférable pour échanger des données entre un navigateur web et un serveur.

Syntaxe JSON avec exemples

Le format json est généralement écrit en 2 variantes :

1. Séquence de valeurs. Par exemple, la séquence 10, 15 et « test » au format JSON ressemblerait à ceci :

2. Enregistrement sous forme de paires clé : valeur. Par exemple:

(« Nom complet » : « Ivanov Sergey », « Date de naissance » : « 03/09/1975 »)

Un exemple un peu plus complexe :

("Nom complet": "Ivanov Sergey", "Adresse": ("Ville": "Moscou", "Rue": "Pyatnitskaya", "Maison": "35") )

Fonctions PHP pour travailler avec le format JSON

En langage PHP depuis la version 5.2. il n'y a que 4 fonctions :

  • json_decode - Décode une chaîne JSON (obtient les données d'une chaîne au format json)
  • json_encode - Renvoie une représentation JSON des données (convertit les données en chaîne json)
  • json_last_error_msg - Renvoie une chaîne indiquant le message d'erreur du dernier appel à json_encode() ou json_decode()
  • json_last_error - Renvoie la dernière erreur

En gros, pour la plupart, seules deux fonctions sont utilisées : json_encode et json_decode. Je n'entrerai pas dans les détails de leur syntaxe, vous pouvez consulter php.net pour plus de détails. Exemple d'utilisation :

$arr1 = tableau(0,1,2); $json_str = json_encode($arr1); echo $json_str; // affichera une chaîne json : $arr2 = json_decode($json_str); écho $arr2; // affichera : 1

Attention : lors de l'encodage de données en russe au format JSON, la fonction json_encode convertit les caractères russes en Unicode, c'est-à-dire les remplace par \uXXXX et ainsi la chaîne json devient illisible pour les humains (mais compréhensible pour le navigateur). Si vous souhaitez éviter la conversion en Unicode (par exemple, lors du débogage du code), vous pouvez simplement utiliser l'option JSON_UNESCAPED_UNICODE.

De plus, pour que les barres obliques d'échappement ne soient pas ajoutées lors du codage et pour que les chaînes contenant des nombres soient codées sous forme de nombres, vous pouvez utiliser JSON_UNESCAPED_SLASHES et JSON_NUMERIC_CHECK. De ce fait, pour rendre la chaîne json lisible par un humain, nous ferons par exemple ceci :

$arr = array("fio" => "Ivanov Sergueï", "age" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

Sans utiliser ces options, la ligne ressemblerait à ceci :

( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "age" : "32", "vk_url": "https:\/\ /vk.com\/id11111" )

et en utilisant les options, on obtient une ligne lisible :

( "fio" : "Ivanov Sergueï", "âge" : 32, "vk_url" : "https://vk.com/id11111" )

Encore un point : si vous souhaitez que la fonction json_decode renvoie un tableau lors du décodage d'une chaîne json, ajoutez simplement un deuxième paramètre à la fonction égal à true.

$json_str = "( "a":1, "b":2, "c":3 )"; $obj = json_decode($json_str); // récupère l'objet echo $obj->a; // affichera 1 $arr = json_decode($json_str, true); // récupère un tableau associatif echo $arr["a"]; // imprimera 1

Ceci conclut mon examen des fonctions PHP.

Fonctions JavaScript pour travailler avec le format JSON

Commençons par le fait que le format JSON a été inventé à l'origine pour le langage JavaScript et est ensuite devenu simplement un format de texte distinct utilisé dans différents langages. Apparemment, c'est pourquoi la syntaxe JSON est très similaire à la syntaxe d'écriture d'objets et de tableaux ordinaires.

// Exemple de tableau en JavaScript arr = ; alerte(arr); // affichera 1 // Exemple d'objet en JavaScript obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) alert(obj.name); // affichera "Vasya"

Fonctions JavaScript utilisées pour convertir vers et depuis le format JSON :

  • JSON.parse - décodage d'une chaîne JSON (conversion d'une chaîne en objets et/ou tableaux)
  • JSON.stringify - renvoie une représentation JSON des données (conversion d'objets et/ou de tableaux en chaîne json)

Un exemple simple de décodage d'une chaîne json en un tableau avec des nombres :

Chaîne = "" ; arr = JSON.parse(str); alerte(arr); // imprimera 1

Un exemple de conversion (sérialisation) d'un objet en chaîne JSON :

Obj = ( "nom": "Vasya", "age": 35, "isAdmin": false ) alert(JSON.stringify(obj)); // affichera ("name": "Vasya", "age": 35, "isAdmin": false)

Lors de la sérialisation (conversion) d'un objet en chaîne JSON, la méthode toJSON de cet objet est appelée, si elle existe. S'il n'y a pas de méthode, alors toutes les propriétés de l'objet sont répertoriées. Un exemple de conversion d'un objet avec la méthode toJSON :

Obj = ( "name": "Vasya", "age": 35, "isAdmin": false, toJSON: function() ( return this.age; ) ) alert(JSON.stringify(obj)); // imprimera 35

Exemples d'application pratique du format JSON

En fait, j'utilise personnellement le format JSON dans 2 situations principales :

1. Transfert de données entre le navigateur et le serveur à l'aide de requêtes Ajax.

Par exemple, nous avons une page sur laquelle nous devons mettre à jour les données sans recharger la page. Disons que vous avez besoin d'informations avec une liste d'employés et leurs données à « télécharger » depuis le serveur.

En JavaScript, à l'aide de jQuery, nous faisons simple et affichons les données sous forme de tableau dans le navigateur :

$.getJSON("get-info.php").success(function(data) ( // requête ajax, les données du serveur seront écrites dans la variable de données htmlstr = "

"; for (var i=0; i "Ivanov Sergueï", "anniversaire" => "03/09/1975"); $user_info = array ("fio" => "Alexey Petrov", "anniversaire" => " 18/09. 1983"); echo json_encode($user_info); exit;

Dans cet exemple, la chaîne JSON transmise du serveur au navigateur ressemblait à ceci :

[("fio": "Sergey Ivanov", "anniversaire": "09/03/1975"), ("fio": "Alexeï Petrov", "anniversaire": " 18/09/1983 ")]

Je n'ai délibérément pas montré la ligne en forme d'« arbre », car il est transmis exactement sous cette forme. Et comme vous pouvez le constater, l'enregistrement des données au format JSON s'est avéré très compact, ce qui signifie que le transfert de ces données du serveur vers le navigateur sera quasi instantané.

2. Écriture de structures de données complexes dans la base de données.

Parfois, il existe des situations où il n'est pas conseillé de créer une autre table dans la base de données afin de stocker diverses données. Disons qu'un utilisateur inscrit sur le site a la possibilité de personnaliser la couleur de fond et la couleur du texte.

Au lieu de créer un autre tableau pour 2 paramètres, vous pouvez simplement créer une colonne de texte dans le tableau avec la liste des utilisateurs dans laquelle placer les données des paramètres utilisateur. La demande de mise à jour des paramètres pourrait alors, par exemple, ressembler à ceci :

MISE À JOUR des utilisateurs SET settings = "("background-color": "#FFFFFF", "text-color": "#000000")" OÙ user_id = 10

À l'avenir, après avoir reçu des informations de la table des utilisateurs, le script php pourra facilement les reconvertir en un tableau avec des paramètres. Par exemple, si la variable $user_info contient des données obtenues pour un utilisateur à partir de la table users, obtenir un tableau avec des paramètres est très simple :

$settings = json_decode($user_info["settings"], true); echo "Couleur d'arrière-plan = ".$settings["background-color"]; echo "Couleur du texte = ".$settings["text-color"];

Au format JSON, vous pouvez également, par exemple, enregistrer dans la base de données les options de produits sélectionnées par l'acheteur.

("15":["45","47"], "18":"52") // l'option 15 a les valeurs 45 et 47 sélectionnées, et l'option 18 a la valeur 52 sélectionnée

En principe, vous pouvez même écrire tout le contenu du panier au format JSON, par exemple, comme ceci :

( "id_utilisateur" : 10, "id_session" : "2c2l3h4ii271aojentejtdcmh3", "produits": [ ( "id_produit" : 15, "options" : ( "15" : , "18" : 52), "quantité" : 1, "prix" : 1500 ), ( "product_id" : 16, "options" : ( "15" : , "18" : 51 ), "quantité" : 2, "prix" : 1000 ) ] )

Dans sa forme habituelle non arborescente, cette chaîne JSON ressemblerait à ceci :

("user_id":10,"session_id":("15":,"18":52),,"quantité":1 , "prix":1500),("product_id":16,"options":("15":,"18":51),,"quantité":2,"prix":1000)])

Ainsi, comme le montrent les exemples, presque toutes les informations peuvent être stockées et transmises au format JSON.

Vous avez sûrement déjà entendu parler de JSON. Qu'est-ce que c'est? Que peut-il faire et comment l'utiliser ?

Dans ce tutoriel, nous aborderons les bases de JSON et aborderons les points suivants :

  • Qu’est-ce que JSON ?
  • A quoi sert JSON ?
  • Comment créer une chaîne JSON ?
  • Un exemple simple de chaîne JSON.
  • Comparons JSON et XML.
  • Comment travailler avec JSON en JavaScript et PHP ?
Qu’est-ce que JSON ?

JSON est un moyen simple, basé sur du texte, de stocker et de transmettre des données structurées. Avec une syntaxe simple, vous pouvez facilement stocker n'importe quoi, depuis un simple nombre jusqu'aux chaînes, tableaux et objets, en texte brut. Vous pouvez également lier des tableaux et des objets pour créer des structures de données complexes.

Une fois la chaîne JSON créée, il est facile de l'envoyer vers une autre application ou vers un autre emplacement du réseau car il s'agit de texte brut.

JSON présente les avantages suivants :

  • C'est compact.
  • Ses phrases sont faciles à lire et à composer aussi bien par les humains que par les ordinateurs.
  • Il peut être facilement converti en structure de données pour la plupart des langages de programmation (nombres, chaînes, booléens, tableaux, etc.)
  • De nombreux langages de programmation disposent de fonctions et de bibliothèques pour lire et créer des structures JSON.

Le nom JSON signifie JavaScript Object Notation. Comme son nom l'indique, il est basé sur une manière de définir des objets (un peu comme la création de tableaux associatifs dans d'autres langages) et des tableaux.

A quoi sert JSON ?

L'utilisation la plus courante de JSON consiste à envoyer des données du serveur au navigateur. Généralement, les données JSON sont fournies via AJAX, ce qui permet au navigateur et au serveur de communiquer sans avoir à recharger la page.

  • L'utilisateur clique sur une vignette de produit dans une boutique en ligne.
  • JavaScript exécuté sur le navigateur génère une requête AJAX au script PHP exécuté sur le serveur, transmettant l'ID du produit sélectionné.
  • Le script PHP obtient le nom du produit, la description, le prix et d'autres informations de la base de données. Ensuite, il compose une chaîne JSON à partir des données et l'envoie au navigateur.
  • JavaScript exécuté sur le navigateur reçoit la chaîne JSON, la décode et affiche les informations sur le produit sur la page pour l'utilisateur.
  • Vous pouvez également utiliser JSON pour envoyer des données du navigateur au serveur en passant une chaîne JSON comme paramètre aux requêtes GET ou POST. Mais cette méthode est moins courante, car le transfert de données via des requêtes AJAX peut être simplifié. Par exemple, l'ID du produit peut être inclus dans l'URL dans le cadre d'une requête GET.

    La bibliothèque jQuery dispose de plusieurs méthodes, telles que getJSON() et parseJSON(), qui facilitent la récupération de données à l'aide de JSON via des requêtes AJAX.

    Comment créer une chaîne JSON ?

    Il existe quelques règles de base pour créer une chaîne JSON :

    • La chaîne JSON contient soit un tableau de valeurs, soit un objet (un tableau associatif de paires nom/valeur).
    • Tableau est placé entre crochets ([ et ]) et contient une liste de valeurs séparées par des virgules.
    • Un objet est entouré d'accolades (( et )) et contient une liste de paires nom/valeur séparées par des virgules.
    • paire nom/valeur se compose du nom du champ entre guillemets doubles, suivi de deux points (:) et de la valeur du champ.
    • Signification dans un tableau ou un objet, il peut y avoir :
      • Nombre (entier ou virgule flottante)
      • Chaîne (entre guillemets doubles)
      • Valeur booléenne (vrai ou faux)
      • Un autre tableau (mis entre crochets)
      • Un autre objet (entouré d'accolades)
      • valeur nulle

    Pour inclure des guillemets doubles dans une chaîne, vous devez utiliser une barre oblique inverse : \" . Comme avec de nombreux langages de programmation, vous pouvez placer des caractères de contrôle et des codes hexadécimaux dans une chaîne en les faisant précéder d'une barre oblique inverse. Consultez le site Web JSON pour plus de détails.

    Exemple de chaîne JSON simple

    Ci-dessous un exemple de commande au format JSON :

    ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": vrai )

    Regardons la ligne en détail :

    • Nous créons un objet en utilisant des accolades (( et )).
    • L'objet a plusieurs paires nom/valeur : "orderID": 12345 Une propriété avec le nom "orderId" et une valeur entière 12345 "shopperName": "Vanya Ivanov" une propriété avec le nom "shopperName" et la valeur de chaîne "Vanya Ivanov " "e-mail de l'acheteur": " [email protégé]" Une propriété nommée "shopperEmail" avec une valeur de chaîne " [email protégé]" "contents": [ ... ] Une propriété nommée "contents" dont la valeur est un tableau "orderCompleted": true Une propriété nommée "orderCompleted" et la valeur booléenne true
    • Il y a 2 objets dans le tableau « contenu » représentant des éléments individuels dans la commande. Chaque objet contient 3 propriétés : productID , productName etQuantity .

    À propos, puisque JSON est basé sur la déclaration d'objets JavaScript, vous pouvez rapidement et facilement faire de la chaîne JSON ci-dessus un objet JavaScript :

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": true );

    Comparaison de JSON et XML

    À bien des égards, vous pouvez considérer JSON comme une alternative au XML, du moins dans le domaine des applications Web. Le concept d'AJAX reposait à l'origine sur l'utilisation de XML pour transférer des données entre le serveur et le navigateur. Mais ces dernières années, JSON est devenu de plus en plus populaire pour le transport de données AJAX.

    Si XML est une technologie éprouvée utilisée dans un bon nombre d’applications, JSON présente l’avantage d’être un format de données plus compact et plus facile à reconnaître.

    Voici à quoi ressemblerait l’exemple d’objet XML ci-dessus :

    N° de commande 12345 Nom du client Vanya Ivanov E-mail du client [email protégé] contenu productID 34 productName Super quantité de produit 1 productID 56 productName Produit miracle quantité 3 orderCompleted true

    La version XML est nettement plus grande. En réalité, il comporte 1 128 caractères, alors que la version JSON ne comporte que 323 caractères. La version XML est également assez difficile à comprendre.

    Bien sûr, c’est un exemple radical. Et il est possible de créer un enregistrement XML plus compact. Mais même cela sera nettement plus long que l’équivalent JSON.

    Travailler avec une chaîne JSON en JavaScript

    JSON a un format simple, mais créer manuellement une chaîne JSON est assez fastidieux. De plus, vous devez souvent prendre une chaîne JSON et convertir son contenu en une variable pouvant être utilisée dans le code.

    La plupart des langages de programmation disposent d'outils permettant de convertir facilement des variables en chaînes JSON et vice versa.

    Créer une chaîne JSON à partir d'une variable

    JavaScript possède une méthode JSON.stringify() intégrée qui prend une variable et renvoie une chaîne JSON représentant son contenu. Par exemple, créons un objet JavaScript contenant les informations de commande de notre exemple, puis créons une chaîne JSON à partir de celui-ci :

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": true ); alert (JSON.stringify(cart));

    Ce code produira :

    Notez que la méthode JSON.stringify() renvoie une chaîne JSON sans espaces. Il est plus difficile à lire, mais il est plus compact pour la transmission sur le réseau.

    Il existe plusieurs façons d'analyser une chaîne JSON en JavaScript, mais la plus sûre et la plus fiable consiste à utiliser la méthode JSON.parse() intégrée. Il reçoit une chaîne JSON et renvoie un objet ou un tableau JavaScript contenant les données. Par exemple:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [email protégé]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Super produit", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": "Biens miracles", \"quantity": 3\ ) \ ], \"orderCompleted": true \ ) \"; var panier = JSON.parse(jsonString); alerte (cart.shopperEmail); alerte(cart.contents.productName);

    Nous avons créé une variable jsonString qui contient la chaîne JSON de notre exemple de commande. Nous transmettons ensuite cette chaîne à la méthode JSON.parse(), qui crée un objet contenant les données JSON et le stocke dans la variable cart. Il ne reste plus qu'à vérifier en affichant les propriétés de l'objet shopperEmail et productName du tableau contents.

    En conséquence, nous obtiendrons le résultat suivant :

    Dans une application réelle, votre code JavaScript recevrait la commande sous forme de chaîne JSON dans une réponse AJAX du script serveur, transmettrait la chaîne à la méthode JSON.parse(), puis utiliserait les données pour l'afficher sur la page de l'utilisateur.

    JSON.stringify() et JSON.parse() ont d'autres fonctionnalités, telles que l'utilisation de fonctions de rappel pour convertir certaines données de manière personnalisée. De telles options sont très utiles pour convertir diverses données en objets JavaScript appropriés.

    Travailler avec une chaîne JSON en PHP

    PHP, comme JavaScript, possède des fonctions intégrées pour travailler avec des chaînes JSON.

    Créer une chaîne JSON à partir d'une variable PHP

    La fonction json_encode() prend une variable PHP et renvoie une chaîne JSON représentant le contenu de la variable. Voici notre exemple de commande, écrit en PHP :

    Ce code renvoie exactement la même chaîne JSON que dans l'exemple JavaScript :

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [email protégé]","contents":[("productID":34,"productName":"Super produit","quantity":1),("productID":56,"productName":"Produit miracle","quantity": 3)],"commandeCompleted":true)

    Dans une application réelle, votre script PHP enverra cette chaîne JSON dans le cadre d'une réponse AJAX au navigateur, où le code JavaScript, à l'aide de la méthode JSON.parse(), l'analysera dans une variable pour l'afficher sur la page de l'utilisateur. .

    Vous pouvez transmettre divers indicateurs comme deuxième argument à la fonction json_encode(). Avec leur aide, vous pouvez modifier les principes d'encodage du contenu des variables dans une chaîne JSON.

    Créer une variable à partir d'une chaîne JSON

    Pour convertir une chaîne JSON en variable PHP, utilisez la méthode json_decode(). Remplaçons notre exemple pour JavaScript par la méthode JSON.parse() par du code PHP :

    Comme avec JavaScript, ce code produira :

    [email protégé] Produit miracle

    Par défaut, la fonction json_decode() renvoie les objets JSON sous forme d'objets PHP. Il existe des objets PHP génériques de la classe stdClass. C'est pourquoi nous utilisons -> pour accéder aux propriétés de l'objet dans l'exemple ci-dessus.

    Si vous avez besoin d'un objet JSON comme tableau PHP associé, vous devez transmettre true comme deuxième argument à la fonction json_decode(). Par exemple:

    $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
    "; echo $cart["contents"]["productName"] . "
    ";

    Ce code produira le même résultat :

    [email protégé] Produit miracle

    Vous pouvez également transmettre d'autres arguments à la fonction json_decode() pour spécifier la profondeur de récursion et comment gérer les grands entiers.

    Conclusion

    Bien que JSON soit facile à comprendre et à utiliser, il s’agit d’un outil très utile et flexible pour transférer des données entre applications et ordinateurs, notamment lors de l’utilisation d’AJAX. Si vous envisagez de développer une application AJAX, alors nul doute que JSON deviendra un outil indispensable dans votre atelier.

    JavaScript Object Notation (JSON) est un format de texte standard permettant de représenter des données structurées basées sur la syntaxe d'objet JavaScript. Il est couramment utilisé pour le transfert de données dans les applications Web (par exemple, pour envoyer certaines données du serveur au client afin qu'elles puissent être affichées sur une page Web ou vice versa). Vous rencontrerez ce problème assez souvent, c'est pourquoi dans cet article, nous vous donnons tout ce dont vous avez besoin pour travailler avec JSON à l'aide de JavaScript, y compris l'analyse de JSON afin que vous puissiez accéder aux données qu'il contient et créer du JSON.

    Non, vraiment, qu'est-ce que JSON ?

    Nous allons le charger dans notre page et utiliser une manipulation DOM soignée pour le restituer, comme ceci :

    Réception de JSON

    Pour recevoir le JSON, nous utiliserons une API appelée XMLHttpRequest (souvent appelée XHR). Il s'agit d'un objet JavaScript très utile qui nous permet d'effectuer des requêtes réseau pour récupérer des ressources du serveur via JavaScript (par exemple des images, du texte, du JSON et même des extraits HTML), ce qui signifie que nous pouvons mettre à jour de petites sections de contenu sans avoir à recharger la page entière. . Cela a abouti à des pages Web plus réactives et semble passionnant, mais cela dépasse malheureusement le cadre de cet article pour l'enseigner beaucoup plus en détail.

  • Commençons par le fait que nous allons stocker l'URL JSON que nous souhaitons recevoir dans une variable. Ajoutez le code JavaScript suivant : var requestURL = "https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json" ;
  • Pour créer une requête, nous devons créer une nouvelle instance d'objet de requête à partir du constructeur XMLHttpRequest à l'aide du nouveau mot-clé. Ajoutez ce qui suit ci-dessous comme dernière ligne : var request = new XMLHttpRequest();
  • Nous devons maintenant ouvrir une nouvelle requête en utilisant le . Ajoutez la ligne suivante : request.open("GET", requestURL);

    Cela nécessite au moins deux paramètres – d’autres paramètres sont disponibles. Nous n’en avons besoin que de deux pour cet exemple simple :

    • La méthode HTTP à utiliser lors d'une requête réseau. Ce cas est correct puisque nous récupérons simplement quelques données simples.
    • L'URL de la demande est l'URL du fichier JSON que nous avons enregistré précédemment.
  • Ajoutez ensuite les deux lignes suivantes : Ici, nous définissons sur JSON afin que XHR sache que le serveur renverra JSON et que celui-ci doit être converti en arrière-plan en un objet JavaScript. Ensuite, nous envoyons la requête en utilisant la méthode : request.responseType = "json"; demande envoyée();
  • La dernière partie de cette section consiste à attendre une réponse de retour du serveur, puis à la gérer. Ajoutez le code suivant sous votre code précédent : request.onload = function() ( var superHeroes = request.response; populateHeader(superHeroes); showHeroes(superHeroes); )
  • Ici nous stockons la réponse à notre requête (disponible dans la propriété) dans la variable superHeroes ; cette variable contiendra désormais un objet JavaScript basé sur JSON ! Nous transmettons ensuite cet objet à deux appels de fonction : le premier le remplira avec les données correctes, et le second créera une carte d'information pour chaque héros de l'équipe et l'insérera dans .

    Nous avons encapsulé le code dans un gestionnaire d'événements qui se déclenche lorsque l'événement de chargement est déclenché sur l'objet de requête (voir) - en effet, l'événement de chargement se déclenche lorsque la réponse est renvoyée avec succès ; procéder de cette façon garantit que request.response sera certainement disponible lorsque nous essaierons de faire quelque chose à ce sujet.

    Remplissage d'en-tête

    Maintenant que nous avons extrait les données JSON et les avons transformées en objet JavaScript, utilisons-les en écrivant les deux fonctions que nous avons liées ci-dessus. Tout d’abord, ajoutez la définition de fonction suivante sous le code précédent :

    Fonction populateHeader(jsonObj) ( var myH1 = document.createElement("h1"); myH1.textContent = jsonObj["squadName"]; header.appendChild(myH1); var myPara = document.createElement("p"); myPara. textContent = "Ville natale : " + jsonObj["homeTown"] + " // Formé : " + jsonObj["formed"]; header.appendChild(myPara); )

    Nous avons nommé le paramètre jsonObj pour rappeler que cet objet JavaScript provenait de JSON. Ici, nous créons d'abord un élément avec , le définissons comme égal à la propriété squadName de l'objet, puis l'ajoutons à l'en-tête avec . On effectue ensuite une opération très similaire avec un paragraphe : on le crée, on définit son contenu textuel et on l'ajoute au titre. La seule différence est que son texte est spécifié sous forme de chaîne concaténée contenant à la fois les propriétés homeTown et formées de l'objet.

    Création de cartes d'informations sur les héros

    Ajoutez ensuite la fonction suivante en bas du code qui crée et affiche les cartes de super-héros :

    Fonction showHeroes(jsonObj) ( var heros = jsonObj["members"]; for (var i = 0; i< heroes.length; i++) { var myArticle = document.createElement("article"); var myH2 = document.createElement("h2"); var myPara1 = document.createElement("p"); var myPara2 = document.createElement("p"); var myPara3 = document.createElement("p"); var myList = document.createElement("ul"); myH2.textContent = heroes[i].name; myPara1.textContent = "Secret identity: " + heroes[i].secretIdentity; myPara2.textContent = "Age: " + heroes[i].age; myPara3.textContent = "Superpowers:"; var superPowers = heroes[i].powers; for (var j = 0; j < superPowers.length; j++) { var listItem = document.createElement("li"); listItem.textContent = superPowers[j]; myList.appendChild(listItem); } myArticle.appendChild(myH2); myArticle.appendChild(myPara1); myArticle.appendChild(myPara2); myArticle.appendChild(myPara3); myArticle.appendChild(myList); section.appendChild(myArticle); } }

    Tout d’abord, stockons la propriété Members de l’objet JavaScript dans une nouvelle variable. Ce tableau contient plusieurs objets contenant des informations sur chaque héros.

    Nous utilisons ensuite pour parcourir chaque objet du tableau. Pour chacun d’eux nous :

  • Nous créons plusieurs nouveaux éléments : , , trois

    ET

  • Langages de balisage de documentsDocuments de bureau

    Vous avez sûrement déjà entendu parler de JSON. Qu'est-ce que c'est? Que peut-il faire et comment l'utiliser ?

    Dans ce tutoriel, nous aborderons les bases de JSON et aborderons les points suivants :

    • Qu’est-ce que JSON ?
    • A quoi sert JSON ?
    • Comment créer une chaîne JSON ?
    • Un exemple simple de chaîne JSON.
    • Comparons JSON et XML.
    • Comment travailler avec JSON en JavaScript et PHP ?
    Qu’est-ce que JSON ?

    JSON est un moyen simple, basé sur du texte, de stocker et de transmettre des données structurées. Avec une syntaxe simple, vous pouvez facilement stocker n'importe quoi, depuis un simple nombre jusqu'aux chaînes, tableaux et objets, en texte brut. Vous pouvez également lier des tableaux et des objets pour créer des structures de données complexes.

    Une fois la chaîne JSON créée, il est facile de l'envoyer vers une autre application ou vers un autre emplacement du réseau car il s'agit de texte brut.

    JSON présente les avantages suivants :

    • C'est compact.
    • Ses phrases sont faciles à lire et à composer aussi bien par les humains que par les ordinateurs.
    • Il peut être facilement converti en structure de données pour la plupart des langages de programmation (nombres, chaînes, booléens, tableaux, etc.)
    • De nombreux langages de programmation disposent de fonctions et de bibliothèques pour lire et créer des structures JSON.

    Le nom JSON signifie JavaScript Object Notation. Comme son nom l'indique, il est basé sur une manière de définir des objets (un peu comme la création de tableaux associatifs dans d'autres langages) et des tableaux.

    A quoi sert JSON ?

    L'utilisation la plus courante de JSON consiste à envoyer des données du serveur au navigateur. Généralement, les données JSON sont fournies via AJAX, ce qui permet au navigateur et au serveur de communiquer sans avoir à recharger la page.

  • L'utilisateur clique sur une vignette de produit dans une boutique en ligne.
  • JavaScript exécuté sur le navigateur génère une requête AJAX au script PHP exécuté sur le serveur, transmettant l'ID du produit sélectionné.
  • Le script PHP obtient le nom du produit, la description, le prix et d'autres informations de la base de données. Ensuite, il compose une chaîne JSON à partir des données et l'envoie au navigateur.
  • JavaScript exécuté sur le navigateur reçoit la chaîne JSON, la décode et affiche les informations sur le produit sur la page pour l'utilisateur.
  • Vous pouvez également utiliser JSON pour envoyer des données du navigateur au serveur en passant une chaîne JSON comme paramètre aux requêtes GET ou POST. Mais cette méthode est moins courante, car le transfert de données via des requêtes AJAX peut être simplifié. Par exemple, l'ID du produit peut être inclus dans l'URL dans le cadre d'une requête GET.

    La bibliothèque jQuery dispose de plusieurs méthodes, telles que getJSON() et parseJSON(), qui facilitent la récupération de données à l'aide de JSON via des requêtes AJAX.

    Comment créer une chaîne JSON ?

    Il existe quelques règles de base pour créer une chaîne JSON :

    • La chaîne JSON contient soit un tableau de valeurs, soit un objet (un tableau associatif de paires nom/valeur).
    • Tableau est placé entre crochets ([ et ]) et contient une liste de valeurs séparées par des virgules.
    • Un objet est entouré d'accolades (( et )) et contient une liste de paires nom/valeur séparées par des virgules.
    • paire nom/valeur se compose du nom du champ entre guillemets doubles, suivi de deux points (:) et de la valeur du champ.
    • Signification dans un tableau ou un objet, il peut y avoir :
      • Nombre (entier ou virgule flottante)
      • Chaîne (entre guillemets doubles)
      • Valeur booléenne (vrai ou faux)
      • Un autre tableau (mis entre crochets)
      • Un autre objet (entouré d'accolades)
      • valeur nulle

    Pour inclure des guillemets doubles dans une chaîne, vous devez utiliser une barre oblique inverse : \" . Comme avec de nombreux langages de programmation, vous pouvez placer des caractères de contrôle et des codes hexadécimaux dans une chaîne en les faisant précéder d'une barre oblique inverse. Consultez le site Web JSON pour plus de détails.

    Exemple de chaîne JSON simple

    Ci-dessous un exemple de commande au format JSON :

    ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": vrai )

    Regardons la ligne en détail :

    • Nous créons un objet en utilisant des accolades (( et )).
    • L'objet a plusieurs paires nom/valeur : "orderID": 12345 Une propriété avec le nom "orderId" et une valeur entière 12345 "shopperName": "Vanya Ivanov" une propriété avec le nom "shopperName" et la valeur de chaîne "Vanya Ivanov " "e-mail de l'acheteur": " [email protégé]" Une propriété nommée "shopperEmail" avec une valeur de chaîne " [email protégé]" "contents": [ ... ] Une propriété nommée "contents" dont la valeur est un tableau "orderCompleted": true Une propriété nommée "orderCompleted" et la valeur booléenne true
    • Il y a 2 objets dans le tableau « contenu » représentant des éléments individuels dans la commande. Chaque objet contient 3 propriétés : productID , productName etQuantity .

    À propos, puisque JSON est basé sur la déclaration d'objets JavaScript, vous pouvez rapidement et facilement faire de la chaîne JSON ci-dessus un objet JavaScript :

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": true );

    Comparaison de JSON et XML

    À bien des égards, vous pouvez considérer JSON comme une alternative au XML, du moins dans le domaine des applications Web. Le concept d'AJAX reposait à l'origine sur l'utilisation de XML pour transférer des données entre le serveur et le navigateur. Mais ces dernières années, JSON est devenu de plus en plus populaire pour le transport de données AJAX.

    Si XML est une technologie éprouvée utilisée dans un bon nombre d’applications, JSON présente l’avantage d’être un format de données plus compact et plus facile à reconnaître.

    Voici à quoi ressemblerait l’exemple d’objet XML ci-dessus :

    N° de commande 12345 Nom du client Vanya Ivanov E-mail du client [email protégé] contenu productID 34 productName Super quantité de produit 1 productID 56 productName Produit miracle quantité 3 orderCompleted true

    La version XML est nettement plus grande. En réalité, il comporte 1 128 caractères, alors que la version JSON ne comporte que 323 caractères. La version XML est également assez difficile à comprendre.

    Bien sûr, c’est un exemple radical. Et il est possible de créer un enregistrement XML plus compact. Mais même cela sera nettement plus long que l’équivalent JSON.

    Travailler avec une chaîne JSON en JavaScript

    JSON a un format simple, mais créer manuellement une chaîne JSON est assez fastidieux. De plus, vous devez souvent prendre une chaîne JSON et convertir son contenu en une variable pouvant être utilisée dans le code.

    La plupart des langages de programmation disposent d'outils permettant de convertir facilement des variables en chaînes JSON et vice versa.

    Créer une chaîne JSON à partir d'une variable

    JavaScript possède une méthode JSON.stringify() intégrée qui prend une variable et renvoie une chaîne JSON représentant son contenu. Par exemple, créons un objet JavaScript contenant les informations de commande de notre exemple, puis créons une chaîne JSON à partir de celui-ci :

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email protégé]", "contents": [ ( "productID": 34, "productName": "Super produit", "quantity": 1 ), ( "productID": 56, "productName": "Produit miracle", "quantity": 3 ) ], "orderCompleted": true ); alert (JSON.stringify(cart));

    Ce code produira :

    Notez que la méthode JSON.stringify() renvoie une chaîne JSON sans espaces. Il est plus difficile à lire, mais il est plus compact pour la transmission sur le réseau.

    Il existe plusieurs façons d'analyser une chaîne JSON en JavaScript, mais la plus sûre et la plus fiable consiste à utiliser la méthode JSON.parse() intégrée. Il reçoit une chaîne JSON et renvoie un objet ou un tableau JavaScript contenant les données. Par exemple:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [email protégé]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "Super produit", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": "Biens miracles", \"quantity": 3\ ) \ ], \"orderCompleted": true \ ) \"; var panier = JSON.parse(jsonString); alerte (cart.shopperEmail); alerte(cart.contents.productName);

    Nous avons créé une variable jsonString qui contient la chaîne JSON de notre exemple de commande. Nous transmettons ensuite cette chaîne à la méthode JSON.parse(), qui crée un objet contenant les données JSON et le stocke dans la variable cart. Il ne reste plus qu'à vérifier en affichant les propriétés de l'objet shopperEmail et productName du tableau contents.

    En conséquence, nous obtiendrons le résultat suivant :

    Dans une application réelle, votre code JavaScript recevrait la commande sous forme de chaîne JSON dans une réponse AJAX du script serveur, transmettrait la chaîne à la méthode JSON.parse(), puis utiliserait les données pour l'afficher sur la page de l'utilisateur.

    JSON.stringify() et JSON.parse() ont d'autres fonctionnalités, telles que l'utilisation de fonctions de rappel pour convertir certaines données de manière personnalisée. De telles options sont très utiles pour convertir diverses données en objets JavaScript appropriés.

    Travailler avec une chaîne JSON en PHP

    PHP, comme JavaScript, possède des fonctions intégrées pour travailler avec des chaînes JSON.

    Créer une chaîne JSON à partir d'une variable PHP

    La fonction json_encode() prend une variable PHP et renvoie une chaîne JSON représentant le contenu de la variable. Voici notre exemple de commande, écrit en PHP :

    Ce code renvoie exactement la même chaîne JSON que dans l'exemple JavaScript :

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [email protégé]","contents":[("productID":34,"productName":"Super produit","quantity":1),("productID":56,"productName":"Produit miracle","quantity": 3)],"commandeCompleted":true)

    Dans une application réelle, votre script PHP enverra cette chaîne JSON dans le cadre d'une réponse AJAX au navigateur, où le code JavaScript, à l'aide de la méthode JSON.parse(), l'analysera dans une variable pour l'afficher sur la page de l'utilisateur. .

    Vous pouvez transmettre divers indicateurs comme deuxième argument à la fonction json_encode(). Avec leur aide, vous pouvez modifier les principes d'encodage du contenu des variables dans une chaîne JSON.

    Créer une variable à partir d'une chaîne JSON

    Pour convertir une chaîne JSON en variable PHP, utilisez la méthode json_decode(). Remplaçons notre exemple pour JavaScript par la méthode JSON.parse() par du code PHP :

    Comme avec JavaScript, ce code produira :

    [email protégé] Produit miracle

    Par défaut, la fonction json_decode() renvoie les objets JSON sous forme d'objets PHP. Il existe des objets PHP génériques de la classe stdClass. C'est pourquoi nous utilisons -> pour accéder aux propriétés de l'objet dans l'exemple ci-dessus.

    Si vous avez besoin d'un objet JSON comme tableau PHP associé, vous devez transmettre true comme deuxième argument à la fonction json_decode(). Par exemple:

    $cart = json_decode($jsonString, true); echo $cart["shopperEmail"] . "
    "; echo $cart["contents"]["productName"] . "
    ";

    Ce code produira le même résultat :

    [email protégé] Produit miracle

    Vous pouvez également transmettre d'autres arguments à la fonction json_decode() pour spécifier la profondeur de récursion et comment gérer les grands entiers.

    Conclusion

    Bien que JSON soit facile à comprendre et à utiliser, il s’agit d’un outil très utile et flexible pour transférer des données entre applications et ordinateurs, notamment lors de l’utilisation d’AJAX. Si vous envisagez de développer une application AJAX, alors nul doute que JSON deviendra un outil indispensable dans votre atelier.