NoSql & JSON

1. Définition

JavaScript Object Notation est un format léger d'échange de données. Facile a écrire et lire par les humains, il est  aisément analysable ou générable par des machines côté clients et côté serveurs.
JSON est un format texte complètement indépendant de tout langage, mais les conventions qu'il utilise seront familières à tout programmeur habitué aux langages descendant du C++ comme le JavaScript ou le PHP.

JSON se base sur deux structures:

  • Une collection de couples nom/valeur. Divers langages la réifient par un objet, un enregistrement, une structure, un dictionnaire, une table de hachage, une liste typée ou un tableau associatif.
  • Une liste de valeurs ordonnées. La plupart des langages la réifient par un tableau, un vecteur, une liste ou une suite.

Ces structures de données sont universelles. Pratiquement tous les langages de programmation modernes les proposent sous une forme ou une autre.

2. Structure

Voici les structures que peuvent prendre des données en format JSON :

  • Un objet : un ensemble de couples nom/valeur non ordonnés. Un objet commence par { (accolade gauche) et se termine par } (accolade droite). Chaque nom est suivi de : (deux-points) et les couples nom/valeur sont séparés par , (virgule). Ex. : {"nom":"Charlier","prenom":"Pierre"}
  • Un tableau (array) : une collection de valeurs ordonnées. Un tableau commence par [ (crochet gauche) et se termine par ] (crochet droit). Les valeurs sont séparées par , (virgule). ex.: ["charlier","Pierre"]
  • Une valeur peut être soit une chaîne de caractères entre guillemets (string), soit un nombre, soit booléen (true ou false) ou null, soit un objet, soit un tableau.

Ces structures peuvent être imbriquées :
[
{
"nom":"Charlier,
"prenom":"Pierre",
"inscrit":true
},
{
"nom":"Michel",
"prenom":"Thierry",
"inscrit":false
}
]

3. Ecriture

La plupart des langages de programmation sont équipés de librairies permettant de créer une chaîne JSON :

  • JavaScript : On retrouve des facilités d'utilisation de JSON dans des frameworks tels que jQuery avec des fonctions d'aide à la création d'appels AJAX (surtout $.getJSON) pour lequel JSON est bien adapté.
    JavaScript peut convertir une chaîne de caractère ayant la syntaxe JSON en objet JS : JSON.parse(string).
    On peut visualiser le contenu de la variable sous forme d'arborescence grâce à la console JavaScript et la fonction console.log.
  • PHP : json_encode() est une fonction permettant d'encoder une chaîne JSON à partir d'un array ou objet PHP.
  • Python : L'extension "Request" permet de lancer des requêtes . Elle offre une méthode "json()" qui converti le json en array à boucler.
  • Editeur online : http://www.jsoneditoronline.org/

4. Traitement

La plupart des langages de programmation sont équipés de librairies permettant de traiter une chaîne JSON :

  • JavaScript traite automatiquement une chaîne JSON en objet dont vous avez directement accès aux propriétés. Il permet aussi de convertir un objet JSON en chaîne de caractères  : JSON.stringify(objet).
  • PHP : json_decode() est une fonction permettant de décoder une chaîne JSON la convertissant en array ou en objet PHP.
  • Python : avec les extensions requests et json. La méthode json() retourne un résultat sous forme d'une collection d'objets qui contiennent des propriétés et values.
  • Editeur online : http://www.jsoneditoronline.org/

Quelques erreurs courantes

 Les chaînes suivantes sont valides en JavaScript mais pas en JSON.

Pas de commentaires dans un fichier JSON.

// Le nom et la valeur doivent être entourés de doubles quotes.
// Les simples quotes ne sont pas valides
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// le nom doit être entouré de double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// la virgule de fin n'est pas autorisée
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

5. Usages

Contrairement à XML, l'usage de JSON est essentiellement voire totalement limité au Web.

Dans les bases de données noSql, les données sont stockées sous format objet dans des collections. Il s'agit en fait de structure json. Les tables sont remplacées par les collections et les enregistrements par des objets.

On peut retrouver ce genre de structure dans des bases de données SQL afin d'étendre les possibilités du projet y attaché (exemple avec WordPress).

Ex. de database noSql : Strapi, MongoDb, FireBase, etc. (Demo : https://mongoplayground.net/)

JSON est aussi un langage qui permet de faire transiter des données d'un service vers un autre dans un format standardisé.
Tous les services web sont compatibles JSON. Que vous utilisiez les APIs de chez Google, Twitter, Facebook, Flickr, Yahoo,.... les données que vous pouvez extraire de ces services peuvent vous être envoyées en format JSON. Ce sont des flux que vous pouvez intégrer dans vos projets.

Ajax est de plus en plus utilisé dans les sites web modernes. Basé sur JavaScript, cette technique pousse à l'utilisation de JSON, plus facilement parsé que l'XML.

HTML5 permet de stocker des informations dans le cache du navigateur (le LocalStorage). Seules des chaînes de caractères (strings) peuvent y être mémorisées. La gestion de ces données est fondée sur JavaScript et donc JSON.

Références

Laisser un commentaire