JavaScript Object Notation
Le JSON (JavaScript Object Notation) est un format léger d’échange de données, facile à lire et à écrire pour les humains car en texte, et facile à analyser et à générer pour les machines. Il est couramment utilisé dans les applications web pour transmettre des données entre un client (navigateur) et un serveur. Bien qu'il soit dérivé de JavaScript, il est maintenant largement adopté par un grand nombre de langages de programmation et de systèmes.
Structure de base du JSON
Le JSON repose sur deux structures principales :
- Objets : Ils sont composés de paires clé-valeur, encadrées par des accolades .
- Tableaux : Ils sont constitués de valeurs séparées par des virgules et encadrées par des crochets [].
{
"nom": "Albert",
"age": 34,
"email": "albert@emc2.com",
"nationalites": ["Suisse", "Américain", "Allemand"]
}
Dans cet exemple, l’objet contient quatre paires clé-valeur :
- "nom" (clé) : "Albert" (valeur de type chaîne de caractères)
- "age" (clé) : 34 (valeur de type nombre)
- "email" (clé) : "albert@emc2.com" (valeur de type chaîne de caractères)
- "nationalites" (clé) : un tableau de valeurs chaîne de caractères
Types de données JSON
Le JSON supporte les types de données suivants :
- Chaînes de caractères (string) : Délimitées par des guillemets doubles. Exemple : "texte"
- Nombres (number) : Entiers ou décimaux. Exemple : 42, 3.14
- Booléens (boolean) : true ou false
- Tableaux (array) : Une liste ordonnée de valeurs, encadrée par des crochets []
- Objets (object) : Paires clé-valeur, encadrées par des accolades
- Null : Représente une valeur nulle. Exemple : null
Règles à respecter
- Les clés doivent toujours être des chaînes de caractères entourées de guillemets doubles.
- Les valeurs peuvent être de différents types (chaînes de caractères, nombres, booléens, tableaux, objets, null).
- Chaque paire clé-valeur dans un objet est séparée par une virgule.
- Les éléments d'un tableau sont également séparés par des virgules.
- Il ne doit pas y avoir de virgule après le dernier élément
Typage limité : Le JSON ne prend pas en charge des types de données plus complexes comme les dates, les fonctions, ou les références circulaires d'objets.
https://jsonformatter.curiousconcept.com/
{
"coloris":"Bleu",
"poids":14.11,
"taille cadre":"XS",
"taille des roues":27.5,
"matière":"Carbone",
"groupe":"Sram",
"offres":[
{ "vendeur":"Vélomania", "stock":7, "prix":12749 },
{ "vendeur":"CycloSport", "stock":3, "prix":11999 },
{ "vendeur":"Freedom Wheels", "stock":0, "prix":9990 }
]
}
{
"coloris":"Rouge",
"poids":13.54,
"taille cadre":"L",
"taille des roues":26,
"matière":"Aluminium",
"groupe":"Shimano",
"offres":[
{"vendeur":"Vélomania","stock":3,"prix":7580},
{"vendeur":"Freedom Wheels","stock":1,"prix":7649}
]
}
PostgreSQL
SELECT nom, json_extract(caracteristiques,'$.coloris') from Produits
SELECT nom, caracteristiques->'$.poids' from Produits
SELECT nom, caracteristiques->>'$.poids' from Produits
Extraire les offres
SELECT Caracteristiques->'$.offres' FROM Produits)
Prendre les offres comme source et pour chaque offre afficher le vendeur et le prix
SELECT value->>'$.vendeur', value->>'$.prix'
FROM json_each((SELECT Caracteristiques->'$.offres' FROM Produits))
Récupérer à la fois la table Produits et les caractéristiques
SELECT p.Nom, o.value->'$.vendeur', o.value->'$.prix'
FROM Produits p, json_each(p.Caracteristiques, '$.offres') AS o