Syntaxe
Règles
{ }Objet (paires clé-valeur non ordonnées)
[ ]Tableau (liste ordonnée de valeurs)
"key": valueLes clés doivent être des chaînes entre guillemets doubles
No trailing commaLe dernier élément ne doit pas avoir de virgule
No commentsJSON n'autorise pas les commentaires
Exemple minimal
{ "name": "Alice", "age": 30, "active": true }
Types de données
Six types de valeurs
"string"Texte UTF-8 entre guillemets doubles
42 / 3.14Nombre (entier ou virgule flottante)
true / falseBooléen
nullNull (absence de valeur)
{ }Objet
[ ]Tableau
Séquences d'échappement de chaînes
\"Guillemet double
\\Barre oblique inverse
\n \tSaut de ligne, tabulation
\uXXXXSéquence d'échappement Unicode (hex)
Objets
Syntaxe des objets
{ "id": 1, "name": "Widget", "tags": ["new", "sale"] }
Règles
KeysDoivent être des chaînes uniques entre guillemets doubles
ValuesTout type JSON valide
OrderL'ordre des clés n'est pas garanti
NestingLes objets peuvent contenir des objets
Tableaux
Syntaxe des tableaux
[1, "two", true, null, {"key": "val"}]
Tableau de types mixtes
{ "matrix": [[1, 2], [3, 4]], "empty": [] }
Règles
OrderedLes éléments conservent l'ordre d'insertion
Mixed typesLes éléments d'un tableau peuvent être de types différents
IndexingBase zéro (dans la plupart des langages)
Imbrication
Structure imbriquée
{ "user": { "name": "Alice", "address": { "city": "Boston" }, "scores": [95, 88, 72] } }
Motifs d'accès
obj.user.nameNotation pointée (JavaScript)
obj["user"]["name"]Notation entre crochets
obj.user.scores[0]Index de tableau dans un objet imbriqué
Validation de schéma
Exemple de schéma JSON
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } }, "required": ["name"] }
Mots-clés du schéma
typestring, number, integer, boolean, object, array, null
requiredTableau des noms de propriétés obligatoires
propertiesDéfinit les propriétés attendues de l'objet
enumRestreindre à un ensemble fixe de valeurs
minLength / maxLengthContraintes de longueur de chaîne
minimum / maximumContraintes de plage numérique
Bases de jq
Filtres courants
.Identité — passer l'entrée telle quelle
.keyAccéder à une clé d'objet
.key.nestedAccéder à une clé imbriquée
.[0]Premier élément du tableau
.[]Itérer tous les éléments du tableau
select(.age > 20)Filtrer par condition
map(.name)Transformer chaque élément
lengthLongueur du tableau ou de la chaîne
keysClés de l'objet en tableau
Exemples jq
echo '{"a":1}' | jq '.a' # 1 echo '[1,2,3]' | jq 'map(. * 2)' # [2,4,6] cat data.json | jq '.users[].name' cat data.json | jq '.[] | select(.active)'
Modèles courants
Réponse API
{ "status": 200, "data": [{"id": 1, "name": "Alice"}], "meta": {"total": 42, "page": 1} }
Fichier de configuration
{ "host": "localhost", "port": 8080, "debug": false, "features": ["auth", "logging"] }
Conseils
ValiderUtiliser jsonlint ou python -m json.tool
Affichage formatéjq . file.json ou python -m json.tool
JSONLUn objet JSON par ligne (délimité par saut de ligne)
JSON5 / JSONCExtensions autorisant les commentaires et les virgules finales