Contactez-nous

Concept : le format JSON (JavaScript Object Notation)

Découvrez le format JSON, le standard universel pour l'échange de données. Apprenez sa syntaxe, ses types de données et pourquoi sa structure est si proche des Hashes Ruby.

Qu'est-ce que le JSON et pourquoi est-il devenu un standard ?

Imaginez que deux personnes parlant des langues différentes doivent échanger des informations complexes. Elles pourraient utiliser un langage simplifié et universel, comme des dessins ou une langue commune basique, pour se comprendre. Le JSON joue exactement ce rôle pour les applications logicielles. C'est un format d'échange de données textuel, indépendant de tout langage de programmation.

Son nom, JavaScript Object Notation, vient de sa ressemblance avec la syntaxe des objets en JavaScript. Cependant, sa simplicité et sa puissance l'ont rendu universellement adopté, bien au-delà de l'écosystème JavaScript. Sa popularité repose sur deux piliers :

  • Il est facile à lire et à écrire pour les humains. Sa syntaxe est minimale et visuellement claire.
  • Il est facile à analyser (parser) et à générer pour les machines. Tous les langages de programmation modernes, y compris Ruby, disposent de bibliothèques très efficaces pour travailler avec le JSON.

Aujourd'hui, le JSON est le format de choix pour les fichiers de configuration, les réponses d'API web et la communication entre microservices. Maîtriser sa structure est donc une compétence fondamentale.

Les deux structures fondamentales : Objets et Tableaux

La syntaxe du JSON repose sur deux types de structures qui peuvent être imbriquées les unes dans les autres pour représenter des données complexes.

Un Objet JSON est une collection de paires clé-valeur, similaire à un dictionnaire ou un Hash en Ruby. Il est délimité par des accolades {}. La clé est toujours une chaîne de caractères entre guillemets doubles, suivie de deux-points :, puis de sa valeur.

{
  "nom": "Stylo",
  "prix": 1.99,
  "enStock": true
}

Un Tableau JSON (Array) est une liste ordonnée de valeurs, comme un Tableau en Ruby. Il est délimité par des crochets [], et ses valeurs sont séparées par des virgules.

[
  "Rouge",
  "Vert",
  "Bleu"
]

Les types de données autorisés comme valeurs

Les valeurs dans une paire clé-valeur ou dans un tableau peuvent appartenir à un ensemble précis de types de données :

  • String : Une chaîne de caractères, toujours entourée de guillemets doubles ("...").
  • Number : Un nombre entier ou à virgule flottante, sans guillemets (42 ou 3.14).
  • Boolean : Les valeurs littérales true ou false, en minuscules et sans guillemets.
  • null : La valeur littérale null, pour représenter l'absence de valeur (l'équivalent du nil de Ruby).
  • Object : Un autre objet JSON, permettant de créer des structures imbriquées.
  • Array : Un autre tableau JSON.

En combinant ces types, nous pouvons modéliser des données très riches. Voici un exemple plus complexe représentant un utilisateur :

{
  "id": 101,
  "nomUtilisateur": "jeanne_d",
  "estActive": true,
  "emailSecondaire": null,
  "competences": [
    "Ruby",
    "Gestion de projet"
  ],
  "adresse": {
    "rue": "123 rue de la République",
    "ville": "Paris"
  }
}

La correspondance quasi parfaite avec les Hashes et Tableaux Ruby

Vous vous demandez peut-être pourquoi nous insistons tant sur cette structure. La raison est que le JSON se traduit de manière quasi-directe en structures de données natives de Ruby. C'est cette correspondance qui rend sa manipulation si naturelle.

  • Un Objet JSON correspond directement à un Hash Ruby.
  • Un Tableau JSON correspond directement à un Array Ruby.

La conversion (ou "parsing") d'une chaîne JSON en objet Ruby consiste principalement à transformer les clés-valeurs JSON en paires clé-valeur d'un Hash. Il y a quelques différences subtiles à noter : les clés en JSON sont toujours des chaînes de caractères ("nom"), alors qu'en Ruby on préfère souvent les symboles (:nom). De même, le null JSON devient le nil Ruby.

Cette relation étroite est la clé de la simplicité du processus. Quand vous lirez un fichier JSON en Ruby dans la section suivante, vous ne ferez rien d'autre que de le traduire en un Hash ou un Array que vous savez déjà parfaitement manipuler. Le JSON n'est donc qu'une représentation textuelle standardisée de structures de données que vous connaissez déjà.