0% ont trouvé ce document utile (0 vote)
6 vues14 pages

Introduction JSON

JSON (JavaScript Object Notation) est un format léger d'échange de données, indépendant de tout langage, utilisé pour sérialiser des objets et des tableaux. Il est couramment utilisé dans les API Web, le stockage de configurations et les bases de données. La validation des objets JSON peut être effectuée à l'aide de JSON Schema, qui définit la structure et le contenu attendus des données.

Transféré par

dakka
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues14 pages

Introduction JSON

JSON (JavaScript Object Notation) est un format léger d'échange de données, indépendant de tout langage, utilisé pour sérialiser des objets et des tableaux. Il est couramment utilisé dans les API Web, le stockage de configurations et les bases de données. La validation des objets JSON peut être effectuée à l'aide de JSON Schema, qui définit la structure et le contenu attendus des données.

Transféré par

dakka
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

14/12/2024

Introduction à JSON
Prof. Naoual Berbiche

Introduction JSON
JSON (JavaScript Object Notation) est un format d’échange de données léger et donc performant. C’est un
format de texte indépendant de tout langage mais utilisant des conventions familières aux programmeurs
de la famille de langages C (incluant JavaScript et Python notamment).

JSON est une syntaxe pour sérialiser* des objets, tableaux, nombres, chaînes de caractères, booléens et
valeurs null. Elle est Sous forme de listes de propriétés lisibles par l'homme (clé/valeur).

Elle est basée sur la syntaxe de JavaScript mais en est distincte : du code JavaScript n’est pas
nécessairement du JSON, et du JSON n’est pas nécessairement du JavaScript.

La sérialisation est en informatique l’action de mettre des données sous forme binaire et de les écrire dans
un fichier.

Par convention, les objets JSON sont stockés dans des fichiers avec l'extension .json

1
14/12/2024

Utilisations de JSON
JSON est couramment utilisé pour :

[Link] Web : Échanger des données entre le client (navigateur ou application) et un serveur.
•Exemple : Lorsqu'une application mobile récupère des données d'un serveur.

[Link] de configurations : JSON est utilisé pour stocker des paramètres ou des
configurations.
•Ex. : Fichier [Link].

[Link] de données : Certaines bases comme MongoDB stockent les données au format
JSON (ou BSON, une version binaire de JSON).

4.Sérialisation de données : Convertir des objets en JSON pour les transmettre ou les
stocker.

Format JSON
Un objet JSON sous la forme d'un objet délimité par des accolades et
séparé par des virgules.
Une virgule n'apparaît pas après la propriété finale.
{ propriété1 ,
propriété2 ,
...
propriétéN }

Pour chaque propriété, le nom est exprimé sous forme de chaîne de


caractères en double quottes.

2
14/12/2024

Types JSON
String:
Représente du texte et est placé entre double guillemets .
Exemple : "nom": "Jean"
Number:
Représente des valeurs numériques. Il peut s'agir d'entiers ou de
nombres à virgule flottante.
Exemple : "age" : 25
Boolean :
Représente des valeurs vraies ou fausses.
Exemple : "isStudent" : true

Types JSON
Array:
Représente une liste ordonnée de valeurs. Mis entre crochets [].
Exemple : "notes" : [85, 92, 78, 90]
Object:
Représente une collection de paires clé-valeur. Inclus entre accolades.
Exemple : "adresse": {"street": "123 Main St", "city": "Example
City"}
Null:
Représente une valeur vide ou l'absence de valeur.
Exemple : "middleName": null

3
14/12/2024

Les espaces

• Les espaces (whitespace) sont autorisés et ignorés autour ou entre


les éléments syntaxiques.

• Quatre caractères sont considérés comme des espaces : espace,


tabulation horizontale et retour chariot.

• JSON ne prend pas en charge les commentaires.

Exemple d’un object


"phoneNumbers":
{ "firstName": "John",
[
"lastName": "Smith", {
"isAlive": true, "type": "home",
"age": 25, "number": "212 555-1234"
"address": },
{ { "type": "office",
"streetAddress": "21 2nd Street", "number": "646 555-4567"
"city": "New York", }
"state": "NY", ],
"children": [],
"postalCode": "10021-3100"
"spouse": null
},
}

4
14/12/2024

Exercice:

Créer un fichier JSON qui représente un tutoriel (titre, description, auteur) et


les commentaires des internautes portés sur ce tutoriel (nom d’utilisateur,
contenu, réponses).

Manipulation JSON dans différents langages


JSON étant un format universel, de nombreux langages proposent des bibliothèques pour
manipuler JSON.

// Exemple JSON
const jsonData = '{"nom": "Alice", "age": 25}';
JavaScript
// Convertir JSON en objet JavaScript
En JavaScript, JSON est intégré const objet = [Link](jsonData);
nativement via les méthodes [Link]([Link]); // "Alice"
[Link] et [Link].
// Convertir un objet JavaScript en JSON
const nouveauJson = [Link](objet);
[Link](nouveauJson); // '{"nom":"Alice","age":25}'

5
14/12/2024

Manipulation JSON dans différents langages

import json

# Exemple JSON
Python json_data = '{"nom": "Alice", "age": 25}'

Python utilise le module json pour # Convertir JSON en dictionnaire Python


lire et écrire du JSON. data = [Link](json_data)
print(data["nom"]) # "Alice"

# Convertir un dictionnaire Python en JSON


nouveau_json = [Link](data, indent=4)
print(nouveau_json)

import [Link];
Manipulation JSON dans
différents langages public class Main {
public static void main(String[] args) throws Exception {
String json = "{\"nom\":\"Alice\",\"age\":25}";

// Convertir JSON en objet Java


ObjectMapper mapper = new ObjectMapper();
Personne personne = [Link](json, [Link]);
Java [Link]([Link]); // "Alice"
En Java, des bibliothèques // Convertir un objet Java en JSON
comme Jackson ou Gson sont String nouveauJson = [Link](personne);
populaires pour manipuler JSON. [Link](nouveauJson);
}
}

class Personne {
public String nom;
public int age;
}

6
14/12/2024

Validation d'objets JSON


• La validation d'objets JSON consiste à vérifier que les données JSON
respectent un certain schéma ou format attendu. Cela garantit que les données
sont structurées correctement et conformes aux exigences spécifiques d'une
application ou d'un service.

• JSON Schema est un langage permettant de définir la structure et le contenu


des objets JSON.

• JSON Schema exprime un schéma sous forme d'objet JSON.

Méthodes pour valider JSON


a. Validation syntaxique b. Validation structurelle
Cette étape vérifie que le JSON est bien
Cette étape vérifie que le JSON respecte
formé.
un schéma défini :
• Les accolades {} et les crochets []
doivent être correctement appariés. • Les clés requises doivent être
• Les clés doivent être des chaînes présentes.
entourées de guillemets doubles ".
• Les types de données des valeurs
• Les valeurs doivent être dans un doivent correspondre à ceux spécifiés
format valide (string, number, boolean, dans le schéma.
null, array, ou object).
• Les contraintes spécifiques (comme une
longueur minimale ou maximale) doivent
être respectées.

7
14/12/2024

JSON Schema
{ "$schema": "[Link]
"title": "Person",
"description": "A person", Pour valider un json
"type": "object", comme:
"properties": { { "name": “Houda El
"name": { Alami",
"description": "A person's name", "age": 35
"type": "string" },
}
"age": {
"description": "A person's age",
"type": "number", "minimum": 18, "maximum": 64 }
},
"required": ["name", "age"]
}

Structure d’un JSON Schema


Un schéma JSON est lui-même un document JSON qui suit une structure définie. Voici ses composants
essentiels :

1. Propriétés de base :
2. Propriétés d’un objet JSON :
$schema : Spécifie la version de JSON Schema
utilisée.  properties : Définit les clés et leurs types
attendus.
title : Un titre décrivant le schéma.
 required : Liste des clés obligatoires.
description : Une description du schéma.
 additionalProperties : Permet ou interdit
type : Détermine le type de données attendu des clés supplémentaires.
(string, integer, array, etc.).

8
14/12/2024

Structure d’un JSON Schema

3. Contraintes supplémentaires :
4. Structures complexes :
 minLength / maxLength : Contraintes sur la
longueur des chaînes.  items : Définit les éléments attendus dans un
tableau.
 minimum / maximum : Contraintes sur les
nombres.  oneOf / anyOf / allOf : Combinaison de
plusieurs schémas.
 enum : Liste des valeurs acceptées.
 $ref : Référence un autre schéma.
 pattern : Une expression régulière à respecter.

Schéma :
JSON Schema simple
{
"$schema": "[Link]
"title": "Utilisateur",
"description": "Un objet représentant un utilisateur.",
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Identifiant unique de l'utilisateur.",
"minimum": 1
},
Voici un schéma pour un objet JSON "nom": {
"type": "string",
représentant un utilisateur : "description": "Nom de l'utilisateur.",
"minLength": 1
},
"email": {
"type": "string",
"description": "Email de l'utilisateur.",
"format": "email"
},
"actif": {
"type": "boolean",
"description": "Si l'utilisateur est actif ou non."
}
},
"required": ["id", "nom", "email"],
"additionalProperties": false
}

9
14/12/2024

Validité du JSON
Exemple JSON valide :
{
"id": 123,
"nom": "Jean Dupont",
Les erreurs de validation incluront :
"email": "[Link]@[Link]",
"actif": true 1. id doit être ≥ 1.
} 2. nom ne peut pas être une chaîne vide.
3. email n’est pas au bon format.
Exemple JSON invalide :
4. actif n’est pas un booléen.
{
"id": -1,
"nom": "",
"email": "[Link]",
"actif": "oui"
}

Schéma :
{
"$schema": "[Link]
"title": "Liste d'utilisateurs",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
Exemple avancé : Tableaux et références "type": "integer",
"minimum": 1
},
"nom": {
"type": "string",
"minLength": 1
Un schéma pour une liste },
d'utilisateurs avec des adresses : "adresses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ville": { "type": "string" },
"codePostal": { "type": "string", "pattern": "^[0-9]{5}$" }
},
"required": ["ville", "codePostal"]
}
}
},
"required": ["id", "nom"]
}
}

10
14/12/2024

[
{
"id": 1,
"nom": "Jean Dupont",
"adresses": [
Validité de l’exemple { "ville": "Paris", "codePostal":
"75001" },
{ "ville": "Lyon", "codePostal":
"69000" }
]
},
{
"id": 2,
"nom": "Marie Curie",
"adresses": [
{ "ville": "Marseille", "codePostal":
"13000" }
]
}
]

$id
Vous pouvez définir l'URI de base en utilisant le mot-clé $id à la racine
du schéma. La valeur de $id est une référence URI.
L'URI résultant est l'URI de base du schéma.
{
"$id": "/schemas/address",
"type": "object",
"properties": {
"street_address" ...
...

11
14/12/2024

$ref
Un schéma peut référencer un autre schéma à l'aide du mot-clé $ref. La
valeur de $ref est une référence URI qui est résolue par rapport à l'URI de base
du schéma.
"vegetables": {
"type": "array",
"items": { "$ref": "#/$defs/veggie" }
"shipping_address":{"$ref": "[Link]
"billing_address": { "$ref": "/schemas/address" }
...
}

enum
• Cet exemple présente le mot-clé de validation enum qui
est utilisé avec un tableau de valeurs

12
14/12/2024

enum
• Cet exemple présente le mot-clé de validation enum qui
est utilisé avec un tableau de valeurs

$defs
Parfois, nous avons de petits sous-schémas qui sont uniquement destinés à
être utilisés dans le schéma actuel.

Cela n'a pas de sens de les définir comme des schémas distincts.

Le mot-clé $defs nous donne un emplacement standardisé pour conserver les


sous-schémas destinés à être réutilisés dans le document de schéma actuel.

13
14/12/2024

Outils pour travailler avec JSON Schema

Éditeurs en ligne :
• JSON Schema Validator
• JSON Schema Linter
Bibliothèques de validation :
• Python : jsonschema
• JavaScript : Ajv
• Java : Everit JSON Schema

Références
• Cours Introduction à JSON – Prof. Karra – département informatique – ESTS
• [Link]
javascript/7911021-exploitez-des-donnees-au-format-json
• [Link]
• [Link]
• [Link]

14

Vous aimerez peut-être aussi