Une introduction à JSON

introduction

JSON - abréviation deJavaScript Object Notation - est un format de partage de données. Comme son nom l’indique, JSON est dérivé du langage de programmation JavaScript, mais il est disponible pour de nombreux langages, notamment Python, Ruby, PHP et Java. JSON est généralement prononcé comme le nom "Jason".

JSON utilise l'extension.json lorsqu'il est autonome. Lorsqu'il est défini dans un autre format de fichier (comme dans.html), il peut apparaître entre guillemets sous forme de chaîne JSON, ou il peut s'agir d'un objet affecté à une variable. Ce format est facile à transmettre entre serveur Web et client ou navigateur.

Très lisible et léger, JSON offre une bonne alternative au XML et nécessite beaucoup moins de formatage. Ce guide d'information vous familiarisera avec les données que vous pouvez utiliser dans les fichiers JSON, ainsi qu'avec la structure et la syntaxe générales de ce format.

Syntaxe et structure

Un objet JSON est un format de données clé-valeur qui est généralement rendu entre accolades. Lorsque vous travaillez avec JSON, vous verrez probablement des objets JSON dans un fichier.json, mais ils peuvent également exister en tant qu'objet ou chaîne JSON dans le contexte d'un programme.

Un objet JSON ressemble à ceci:

{
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "online" : true,
  "followers" : 987
}

Bien qu'il s'agisse d'un exemple très court et que JSON puisse comporter plusieurs lignes, cela montre que le format est généralement configuré avec deux accolades (ou accolades) qui ressemblent à ce{ } à chaque extrémité, et avec des paires clé-valeur remplissant l'espace entre. La plupart des données utilisées dans JSON finissent par être encapsulées dans un objet JSON.

Les paires clé-valeur ont un signe deux-points entre elles comme dans"key" : "value". Chaque paire clé-valeur est séparée par une virgule, de sorte que le milieu d'un JSON ressemble à ceci:"key" : "value", "key" : "value", "key": "value". Dans notre exemple ci-dessus, la première paire clé-valeur est"first_name" : "Sammy".

JSONkeys sont sur le côté gauche des deux points. Ils doivent être placés entre guillemets doubles, comme dans"key", et peuvent être n'importe quelle chaîne valide. Dans chaque objet, les clés doivent être uniques. Ces chaînes de clécan incluent des espaces, comme dans"first name", mais cela peut rendre l'accès plus difficile lorsque vous programmez, il est donc préférable d'utiliser des traits de soulignement, comme dans"first_name".

JSONvalues se trouvent à droite des deux points. Au niveau granulaire, il doit s'agir de l'un des 6 types de données simples:

  • des cordes

  • Nombres

  • objets

  • tableaux

  • Booléens (vrais ou faux)

  • null

À un niveau plus large, les valeurs peuvent également être constituées des types de données complexes de l'objet ou du tableau JSON, qui sont couverts dans lesnext section.

Chacun des types de données transmis en tant que valeurs dans JSON conservera sa propre syntaxe. Les chaînes seront donc entre guillemets, mais pas les nombres.

Bien que dans les fichiers.json, nous voyons généralement le format développé sur plusieurs lignes, JSON peut également être écrit sur une seule ligne.

{ "first_name" : "Sammy", "last_name": "Shark",  "online" : true, }

Cela serait plus courant dans un autre type de fichier ou lorsque vous rencontrez une chaîne JSON.

L'écriture du format JSON sur plusieurs lignes le rend souvent beaucoup plus lisible, en particulier lorsqu'il s'agit d'un grand ensemble de données. Comme JSON ignore les espaces blancs entre ses éléments, vous pouvez espacer vos deux points et vos paires clé-valeur afin de rendre les données encore plus lisibles par l'homme:

{
  "first_name"  :  "Sammy",
  "last_name"   :  "Shark",
  "online"      :  true
}

Il est important de garder à l'esprit que même s'ils se ressemblent, un objet JSON n'est pas au même format qu'unJavaScript object, donc, bien que vous puissiez utiliser des fonctions dans des objets JavaScript, vous ne pouvez pas les utiliser comme valeurs dans JSON. L'attribut le plus important de JSON est qu'il peut être facilement transféré entre les langages de programmation dans un format compatible avec toutes les langues participantes. Les objets JavaScript ne peuvent être utilisés que directement via le langage de programmation JavaScript.

Jusqu'ici, nous avons examiné le format JSON dans ses termes les plus simples, mais JSON peut devenir hiérarchique et complexe, composé d'objets et de tableaux imbriqués. Nous allons passer en revue plus complexe JSON dans la section suivante.

Utilisation de types complexes en JSON

JSON peut stocker des objets imbriqués au format JSON en plus des tableaux imbriqués. Ces objets et tableaux seront transmis en tant que valeurs attribuées aux clés et seront généralement composés de paires clé-valeur.

Objets imbriqués

Dans le fichierusers.json ci-dessous, pour chacun des quatre utilisateurs ("sammy","jesse","drew","jamie") il y a un objet JSON imbriqué passé comme le valeur pour chacun des utilisateurs, avec ses propres clés imbriquées de"username" et"location" qui se rapportent à chacun des utilisateurs. Le premier objet JSON imbriqué est mis en évidence ci-dessous.

users.json

{
  "sammy" : {
    "username"  : "SammyShark",
    "location"  : "Indian Ocean",
    "online"    : true,
    "followers" : 987
  },
  "jesse" : {
    "username"  : "JesseOctopus",
    "location"  : "Pacific Ocean",
    "online"    : false,
    "followers" : 432
  },
  "drew" : {
    "username"  : "DrewSquid",
    "location"  : "Atlantic Ocean",
    "online"    : false,
    "followers" : 321
  },
  "jamie" : {
    "username"  : "JamieMantisShrimp",
    "location"  : "Pacific Ocean",
    "online"    : true,
    "followers" : 654
  }
}

Dans l'exemple ci-dessus, des accolades sont utilisées pour former un objet JSON imbriqué avec un nom d'utilisateur et des données de localisation associés pour chacun des quatre utilisateurs. Comme toute autre valeur, lors de l'utilisation d'objets, les virgules sont utilisées pour séparer les éléments.

Tableaux imbriqués

Les données peuvent également être imbriquées au format JSON en utilisant des tableaux JavaScript transmis en tant que valeur. JavaScript utilise les crochets[ ] à chaque extrémité de son type de tableau. Les tableaux sont des collections ordonnées et peuvent contenir des valeurs de différents types de données.

Nous pouvons utiliser un tableau lorsque nous traitons avec un grand nombre de données pouvant être facilement regroupées, comme lorsque différents sites Web et profils de médias sociaux sont associés à un seul utilisateur.

Avec le premier tableau imbriqué mis en surbrillance, un profil utilisateur pour Sammy peut ressembler à ceci:

user_profile.json

{
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "websites" : [
    {
      "description" : "work",
      "URL" : "https://www.digitalocean.com/"
    },
    {
      "desciption" : "tutorials",
      "URL" : "https://www.digitalocean.com/community/tutorials"
    }
  ],
  "social_media" : [
    {
      "description" : "twitter",
      "link" : "https://twitter.com/digitalocean"
    },
    {
      "description" : "facebook",
      "link" : "https://www.facebook.com/DigitalOceanCloudHosting"
    },
    {
      "description" : "github",
      "link" : "https://github.com/digitalocean"
    }
  ]
}

La clé"websites" et la clé"social_media" utilisent chacune un tableau pour imbriquer les informations appartenant aux 2 liens de site Web de Sammy et aux 3 liens de profil de médias sociaux. Nous savons que ce sont des tableaux à cause de l'utilisation des crochets.

L'utilisation de l'imbrication dans notre format JSON nous permet de travailler avec des données plus complexes et hiérarchisées.

Comparaison avec XML

XML, ou eXtensibleMarkupLanguage, est un moyen de stocker des données accessibles qui peuvent être lues par des humains et des machines. Le format XML est disponible pour une utilisation dans de nombreux langages de programmation.

À bien des égards, XML ressemble beaucoup au JSON, mais il nécessite beaucoup plus de texte, il est donc plus long et long à lire et à écrire. XML doit être analysé avec un analyseur XML, mais JSON peut être analysé avec une fonction standard. De même, contrairement à JSON, XML ne peut pas utiliser de tableaux.

Nous allons examiner un exemple de format XML, puis les mêmes données rendues en JSON.

users.xml


    
        SammyShark Indian Ocean
    
    
        JesseOctopus Pacific Ocean
    
    
        DrewSquir Atlantic Ocean
    
    
        JamieMantisShrimp Pacific Ocean
    

users.json

{"users": [
  {"username" : "SammyShark", "location" : "Indian Ocean"},
  {"username" : "JesseOctopus", "location" : "Pacific Ocean"},
  {"username" : "DrewSquid", "location" : "Atlantic Ocean"},
  {"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }

Nous constatons que JSON est beaucoup plus compact et ne nécessite pas de balises de fin, contrairement à XML. De plus, XML n'utilise pas de tableau comme le fait cet exemple de JSON (ce que vous pouvez déterminer à l'aide de crochets).

Si vous connaissez bien le langage HTML, vous remarquerez que l’utilisation de balises dans XML est assez similaire. Bien que JSON soit plus léger et moins détaillé que XML, et rapide à utiliser dans de nombreuses situations, notamment les applications AJAX, vous devez comprendre le type de projet sur lequel vous travaillez avant de décider des structures de données à utiliser.

Ressources

JSON est un format naturel à utiliser en JavaScript et dispose de nombreuses implémentations disponibles pour une utilisation dans de nombreux langages de programmation courants. Vous pouvez voir la prise en charge complète des langues sur le site «http://www.json.org/[Introducing JSON]», et lesjQuery librarypeuvent également prendre en charge la compatibilité et l'analyse.

La plupart du temps, vous n’écrirez pas du JSON pur, mais vous le tirerez à partir de sources de données ou ne convertirez pas d’autres fichiers de données en JSON. Vous pouvez convertir des données CSV ou délimitées par des tabulations que vous pouvez trouver dans les tableurs en JSON en utilisant l'outil open-sourceMr. Data Converter. Vous pouvez convertir du XML en JSON et vice versa avec lesutilities-online.info site sous licence Creative Commons. Lorsque vous utilisez des outils automatisés, vous devez vérifier vos résultats et supprimer la redondance si nécessaire.

Lors de la traduction d'autres types de données en JSON, ou de la création du vôtre, vous pouvez valider votre JSON avecJSONLint et tester votre JSON dans un contexte de développement Web avecJSFiddle.

Conclusion

JSON est un format léger qui vous permet de facilement partager, stocker et travailler avec des données. En tant que format, JSON a connu une prise en charge accrue dans les API, y compris lesTwitter API.

Étant donné que vous ne créerez probablement pas vos propres fichiers.json mais que vous les procurerez à d’autres sources, il est important de moins réfléchir à la structure de JSON et plus à la meilleure façon d’utiliser JSON dans vos programmes.