JSON

Voir la vidéo

Dans cette vidéo je vous propose de découvrir le format JSON (JavaScript Object Notation) qui est un format de données textuelles facilement lisible par les humains. Il est dérivé de la notation des objets JavaScript et est très utilisé dans le web pour échanger des informations avec des services tiers.

Le format permet de représenter 6 types de données. Si vous avez besoin de plus de détails sur la syntaxe vous pouvez regarder la page json.org. Chacun de ces types peut être utilisé comme document JSON.

Types scalaires

Les nombres

Les nombres s'écrivent de manière classique (avec un . pour les décimales) et la possibilité d'utiliser la notation scientifique.

1
140
-3
1.5
10e10

Les chaînes de caractères

Les chaînes de caractères est une suite de caractères unicode délimitée par des guillemets doubles. Il est possible d'utiliser l'échappement avec des antislash pour représenter certains caractères spécifiques comme des sauts de lignes ou des tabulation.

"Bonjour les gens"
"Je veux mettre du \"texte\" entre guillemet"
"Je saute\nune ligne"

Les booléens

Les booléens permettent de représenter une valeur vrai ou fausse.

true
false

La valeur null

Cette valeur permet d'indiquer l'absence de valeur.

null

Types composés

Ces types permettent de représenter des valeurs plus complexes en utilisant une combinaison de plusieurs types.

Les tableaux

Les tableaux permettent de représenter une liste de valeur et sont délimité par des crochets []. Les valeurs sont séparées par des ,.

["valeur", 3, true]

Il est possible d'insérer des espaces autour de la ponctuation, cela permet par exemple d'indenter pour rendre le contenu plus lisible.

[
  "Valeur 1",
  "Valeur 2",
  "Valeur 3"
]

Enfin, un tableau peut contenir en valeur un tableau et aussi un objet.

["valeur", ["tableau", "imbriqué"]]

Les objets

Les objets sont un ensembles de paires clé / valeur qui permet de représenter des concepts complexes. Ces objets seront délimité par des accolades {}.

{
  "firstname": "John",
  "lastname": "Doe",
  "age": 18
}

Les valeurs peuvent être de n'importe quel type (et même être un objet)

{
  "firstname": "John",
  "lastname": "Doe",
  "age": 18,
  "job": {
    "name": "Développeur web",
    "startHour": 9,
    "endHour": 19
  }
}

Exemple

Voici par un exemple un document json permettant de représenter un article et ses commentaires.

{
    "title": "Tutoriel JSON",
    "content": "...",
    "author": {
        "firstname": "Jonathan",
        "lastname": "Boyer",
        "birthyear": 1987
    },
    "comments": [
        {
            "username": "John Doe",
            "content": "Super tutoriel",
            "replies": []
        }, {
            "username": "Jane Doe",
            "content": "J'ai bien aimé ce tutoriel",
            "replies": [
                {
                    "username": "John Doe",
                    "content": "...",
                    "replies": []
                }
            ]
        }
    ]
}

Format dérivés et outils

Des technologies et des variations se sont développées autour de ce format.

JSON Schema

JSON Schema est une spécification qui définit une manière de créer un schéma pour annoter et valider un document JSON. Ce schéma est définit à l'aide du format JSON.

{
  "$id": "https://example.com/address.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "An address similar to http://microformats.org/wiki/h-card",
  "type": "object",
  "properties": {
    "post-office-box": {
      "type": "string"
    },
    "extended-address": {
      "type": "string"
    },
    "street-address": {
      "type": "string"
    },
    "locality": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "postal-code": {
      "type": "string"
    },
    "country-name": {
      "type": "string"
    }
  },
  "required": [ "locality", "region", "country-name" ],
  "dependentRequired": {
    "post-office-box": [ "street-address" ],
    "extended-address": [ "street-address" ]
  }
}

JSONC

Diminutif de "JSON with Comments", ce format est visible dans la configuration de l'éditeur Visual Studio Code et permet d'insérer des commentaires en plus des éléments que l'on a vu précédemment.

  • // pour écrire un commentaire sur une ligne.
  • /* et */ pour délimiter un commentaire multi ligne.
Publié
Technologies utilisées
Auteur :
Grafikart
Partager