Aller au contenu

Rappels sur JSON#

  • JavaScript Object Notation
  • Créé en 2005
  • Format d'échange de données structurées léger
  • Schéma des données non connu
    • contenu dans les données
  • Basé sur deux notions :
    • collection de couples clé/valeur
    • liste de valeurs ordonnées

Syntaxe et types en JSON#

  • Similaire à du JavaScript uniquement pour les données
  • On parle de littéral
  • Deux types atomiques (string et number)
  • Trois constantes (true, false, null)
  • Structures possibles :
    • objet (couples clé/valeur) :
      • {}
      • { "nom": "doe", "prenom": "jon" }
    • tableau (collection de valeurs) :
      • []
      • [ 1, 5, 10]
    • une valeur dans un objet ou dans un tableau peut être elle-même un littéral

Important

C'est le format de données utilisé dans la CLI de MongoDB et pour les requêtes des utilisateurs.

Validation du JSON#

Validation possible du JSON à l'aide de jsonlint.com/

{
  "name": "John Doe",
  "age": 42,
  "food": ["pizza", "cake"],
  "wife": {
    "name": "Jane Doe",
    "age": 42
  }
}

Note

Il existe aussi des moyens de définir des structures de données spécifiques en JSON (notion de schéma de donneés) et de valider un document d'après ce schéma Voir https://json-schema.org/

Compléments#

BSON (Binary-JSON)#

  • Une évolution de JSON au format binaire
  • Représente les mêmes structures données et tableaux associatifs
  • Quelques différences
    • types supplémentaires (identifiant spécifique, binaire, date, ...)
    • Distinction entier et réel

Important

C'est le format de données utilisé dans MongoDB pour le stockage et sur le réseau.

JSON5 / HJSON#

JSON5 et HJSON sont deux extensions de la syntaxe du JSON, destinées à contourner les limitations de ce dernier.

  • Les noms des champs ne sont plus entre guillemets
  • Support des commentaires (sur une ou plusieurs lignes)
  • Espaces blancs supplémentaires autorisés
  • Les chaînes de caractères peuvent être contenus entre apostrophes

Important

C'est un format de données identique à la syntaxe objet de JavaScript (mais sans instructions).

Références#