Introduction au format JSON

Le format JSON, qui est l’acronyme de JavaScript Object Notation, est utilisé pour des besoins de sérialisation de type clef-valeur. Comme son nom l’indique, il s’agit d’un format qui dérive du langage de programmation JavaScript et qui a été spécifié par Douglas Crockford dans les standard ECMA-404 et RFC 7159.

Bien que non limité à l’usage dans le web, il est très utilisé comme format de données dans la communication entre le navigateur web et le serveur, volant ainsi la vedette au format XML. L’usage de JSON à la place du Extensible Markup Language (XML) offre plusieurs avantages :

  • Cette notation occupe moins de place que l’XML, réduisant ainsi la bande passante utilisée.

  • Etant beaucoup plus simple dans sa structure, les opérations de lecture/écriture sur du JSON sont également beaucoup plus rapides. De plus, la désérialisation est aussi beaucoup plus rapide.

  • JSON offre un type Array (tableau) et donc une structure permettant de stocker des valeurs de manière ordonnées.

  • Une fois parsé, le JSON peut directement être utilisé comme object JavaScript, ce qui est particulièrement intéressant dans le cas d’une application Web.

Un objet JSON supporte plusieurs type de valeurs:

  • Nombre entier ou à virgule flottante qui supporte aussi la notation exponentiel (E ou e).

  • Chaîne de caractères en Unicode

  • Booléen

  • null, pour indiquer une valeur vide

  • Objet, ce qui permet d’imbriquer les objets les uns dans les autres

Chaque clef est quant à elle sous forme de chaîne de caractères. Par défaut, un document JSON est encodé en UTF-8, mais il est également possible d’utiliser de l’UTF-16 et de l’UTF-32. A noter également que JSON ne définit pas de format de date. Il faut dans ce cas soit utiliser un timestamp sour forme numérique ou stocker la date sous forme de chaîne de caractère.

Voici à quoi pourrait ressembler un objet JSON contenant les informations d’un utilisateur:

{
   "username" : "jdoe",
   "lastname" : "John",
   "firstname" : "Doe",
   "email" : "jdoe@example.com",
   "admin" : true,
   "groups" : ["managers", "users"],
   "points" : 42,
   "preferences" : {
      "background_image" : "foo_bg.png",
      "color" : "#e84900"
   }
}

Laisser un commentaire