← Retour au Blog

Comment formater JSON : Guide complet avec outils et techniques

Maîtrisez le formatage JSON avec des techniques, outils et bonnes pratiques. Apprenez l'indentation, la validation et la beautification de vos données JSON.

Big JSON Team13 min de lecturetutorial
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

13 min de lecture

# Comment formater JSON : Guide complet avec outils et techniques

Le formatage JSON correct est essentiel pour la lisibilité, la maintenance et le débogage de vos données. Ce guide vous apprend tout ce qu'il faut savoir sur le formatage JSON.

Pourquoi formater JSON ?

Problèmes du JSON non formaté

JSON minifié (illisible) :

\\\json

{"utilisateur":{"id":1,"nom":"Jean Dupont","email":"jean@exemple.com","adresse":{"rue":"123 Rue Principale","ville":"Paris","codePostal":"75001"},"roles":["admin","utilisateur"],"actif":true}}

\\\

JSON bien formaté (lisible) :

\\\json

{

"utilisateur": {

"id": 1,

"nom": "Jean Dupont",

"email": "jean@exemple.com",

"adresse": {

"rue": "123 Rue Principale",

"ville": "Paris",

"codePostal": "75001"

},

"roles": ["admin", "utilisateur"],

"actif": true

}

}

\\\

Avantages du formatage

  • Lisibilité améliorée : Structure claire et facile à comprendre
  • Débogage facilité : Repérage rapide des erreurs
  • Collaboration : Code plus maintenable en équipe
  • Validation : Détection des erreurs de syntaxe

Règles de formatage JSON

1. Indentation

Indentation recommandée : 2 espaces

\\\json

{

"niveau1": {

"niveau2": {

"niveau3": "valeur"

}

}

}

\\\

Alternative : 4 espaces

\\\json

{

"niveau1": {

"niveau2": {

"niveau3": "valeur"

}

}

}

\\\

À éviter : tabulations

\\\json

{

"clé": "valeur"

}

\\\

2. Espacement

Après les deux-points :

\\\json

{

"nom": "Jean",

"age": 30

}

\\\

Sans espace :

\\\json

{

"nom":"Jean",

"age":30

}

\\\

Dans les tableaux :

\\\json

{

"couleurs": ["rouge", "vert", "bleu"],

"nombres": [1, 2, 3, 4, 5]

}

\\\

3. Sauts de ligne

Pour les objets :

\\\json

{

"utilisateur": {

"nom": "Jean",

"age": 30,

"email": "jean@exemple.com"

}

}

\\\

Pour les tableaux courts (1 ligne) :

\\\json

{

"tags": ["json", "formatage", "tutoriel"]

}

\\\

Pour les tableaux longs (multi-lignes) :

\\\json

{

"utilisateurs": [

{

"id": 1,

"nom": "Alice"

},

{

"id": 2,

"nom": "Bob"

},

{

"id": 3,

"nom": "Charlie"

}

]

}

\\\

4. Ordre des clés

Alphabétique (recommandé pour configuration) :

\\\json

{

"actif": true,

"age": 30,

"email": "jean@exemple.com",

"nom": "Jean Dupont"

}

\\\

Logique (recommandé pour données) :

\\\json

{

"id": 1,

"nom": "Jean Dupont",

"email": "jean@exemple.com",

"age": 30,

"actif": true

}

\\\

Formatage avec JavaScript

JSON.stringify()

\\\javascript

const donnees = {

nom: "Jean Dupont",

age: 30,

ville: "Paris"

};

// Sans formatage

console.log(JSON.stringify(donnees));

// {"nom":"Jean Dupont","age":30,"ville":"Paris"}

// Avec indentation de 2 espaces

console.log(JSON.stringify(donnees, null, 2));

/

{

"nom": "Jean Dupont",

"age": 30,

"ville": "Paris"

}

/

// Avec indentation de 4 espaces

console.log(JSON.stringify(donnees, null, 4));

\\\

Formatage personnalisé avec replacer

\\\javascript

const donnees = {

nom: "Jean",

age: 30,

motDePasse: "secret123",

email: "jean@exemple.com"

};

// Filtrer certaines clés

const jsonFormate = JSON.stringify(donnees, (cle, valeur) => {

// Masquer le mot de passe

if (cle === "motDePasse") {

return "**";

}

return valeur;

}, 2);

console.log(jsonFormate);

/

{

"nom": "Jean",

"age": 30,

"motDePasse": "**",

"email": "jean@exemple.com"

}

/

\\\

Tri des clés

\\\javascript

function stringifyTrie(obj, espace = 2) {

return JSON.stringify(obj, (cle, valeur) => {

if (valeur && typeof valeur === 'object' && !Array.isArray(valeur)) {

return Object.keys(valeur)

.sort()

.reduce((tri, k) => {

tri[k] = valeur[k];

return tri;

}, {});

}

return valeur;

}, espace);

}

const donnees = {

z: 1,

a: 2,

m: 3

};

console.log(stringifyTrie(donnees));

/

{

"a": 2,

"m": 3,

"z": 1

}

/

\\\

Formatage avec Python

Module json

\\\python

import json

donnees = {

"nom": "Jean Dupont",

"age": 30,

"ville": "Paris"

}

# Formatage avec indentation

json_formate = json.dumps(donnees, indent=2, ensure_ascii=False)

print(json_formate)

# {

# "nom": "Jean Dupont",

# "age": 30,

# "ville": "Paris"

# }

# Tri des clés

json_trie = json.dumps(donnees, indent=2, sort_keys=True, ensure_ascii=False)

print(json_trie)

\\\

Formatage avancé

\\\python

import json

donnees = {

"utilisateurs": [

{"nom": "Alice", "age": 28},

{"nom": "Bob", "age": 35}

]

}

# Options complètes

json_formate = json.dumps(

donnees,

indent=2, # Indentation 2 espaces

sort_keys=True, # Trier les clés

ensure_ascii=False, # Permettre caractères Unicode

separators=(',', ': ') # Séparateurs personnalisés

)

print(json_formate)

\\\

Outils en ligne de commande

jq (Linux/Mac/Windows)

\\\bash

# Formater un fichier JSON

jq . fichier.json

# Formater avec indentation spécifique

jq --indent 4 . fichier.json

# Formater et trier les clés

jq -S . fichier.json

# Minifier JSON

jq -c . fichier.json

# Sauvegarder le résultat

jq . fichier.json > fichier-formate.json

\\\

Python (intégré)

\\\bash

# Formater avec Python

python -m json.tool fichier.json

# Avec sortie vers fichier

python -m json.tool fichier.json > fichier-formate.json

# Avec tri des clés

python -m json.tool --sort-keys fichier.json

\\\

Node.js

\\\bash

# Créer un script de formatage

node -e "console.log(JSON.stringify(require('./fichier.json'), null, 2))"

\\\

Éditeurs et IDE

Visual Studio Code

Formatage automatique :
  • Windows/Linux : Shift + Alt + F
  • Mac : Shift + Option + F

settings.json :

\\\json

{

"editor.formatOnSave": true,

"editor.defaultFormatter": "vscode.json-language-features",

"[json]": {

"editor.tabSize": 2,

"editor.insertSpaces": true

}

}

\\\

Sublime Text

Package : Pretty JSON

Raccourcis :

  • Formatage : Cmd+Ctrl+J (Mac) ou Ctrl+Alt+J (Windows)
  • Minification : Cmd+Ctrl+M (Mac)

IntelliJ IDEA / WebStorm

Formatage :
  • Windows/Linux : Ctrl + Alt + L
  • Mac : Cmd + Option + L

Outils en ligne

1. JSONLint

  • URL : jsonlint.com
  • Validation et formatage
  • Détection d'erreurs

2. JSON Formatter & Validator

  • URL : jsonformatter.curiousconcept.com
  • Formatage en temps réel
  • Visualisation en arbre

3. Code Beautify

  • URL : codebeautify.org/jsonviewer
  • Multi-fonctions
  • Conversion vers autres formats

Validation pendant le formatage

Erreurs courantes

1. Virgule finale (trailing comma) :

\\\json

{

"nom": "Jean",

"age": 30, // ❌ Virgule finale

}

\\\

Corrigé :

\\\json

{

"nom": "Jean",

"age": 30

}

\\\

2. Guillemets simples :

\\\json

{

'nom': 'Jean' // ❌ Guillemets simples

}

\\\

Corrigé :

\\\json

{

"nom": "Jean"

}

\\\

3. Commentaires :

\\\json

{

// Ceci est un commentaire // ❌ Commentaires non supportés

"nom": "Jean"

}

\\\

Workaround :

\\\json

{

"_commentaire": "Ceci est une note",

"nom": "Jean"

}

\\\

Formatage automatisé

Git pre-commit hook

\\\bash

#!/bin/bash

# .git/hooks/pre-commit

# Formater tous les fichiers JSON

for file in $(git diff --cached --name-only | grep -E '\.json$'); do

jq . "$file" > "$file.tmp" && mv "$file.tmp" "$file"

git add "$file"

done

\\\

Package.json scripts

\\\json

{

"scripts": {

"format:json": "prettier --write '*/.json'",

"validate:json": "jsonlint -q */.json",

"format": "npm run format:json"

},

"devDependencies": {

"prettier": "^3.0.0",

"jsonlint": "^1.6.3"

}

}

\\\

Prettier configuration

.prettierrc.json :

\\\json

{

"tabWidth": 2,

"useTabs": false,

"semi": true,

"singleQuote": false,

"trailingComma": "none",

"bracketSpacing": true,

"printWidth": 80

}

\\\

Meilleures pratiques

1. Cohérence

Utilisez toujours le même style dans tout le projet :

  • Indentation : 2 ou 4 espaces
  • Ordre des clés : alphabétique ou logique
  • Format des tableaux : inline ou multi-lignes

2. Automatisation

Configurez votre éditeur pour formater automatiquement :

  • Format on save
  • Pre-commit hooks
  • CI/CD validation

3. Documentation

Documentez votre convention de formatage :

\\\markdown

Convention JSON

  • Indentation : 2 espaces
  • Ordre des clés : alphabétique
  • Tableaux courts : inline (<3 éléments)
  • Tableaux longs : multi-lignes
\
\\

4. Validation

Utilisez des outils de validation :

  • JSON Schema
  • ESLint plugins
  • CI/CD checks

Formatage pour différents contextes

Configuration files

package.json - Indentation 2 espaces, ordre logique :

\\\json

{

"name": "mon-projet",

"version": "1.0.0",

"description": "Description du projet",

"main": "index.js",

"scripts": {

"start": "node index.js",

"test": "jest"

},

"dependencies": {

"express": "^4.18.0"

}

}

\\\

API responses

Compact pour production :

\\\json

{"status":"success","data":{"users":[{"id":1,"name":"Alice"}]}}

\\\

Formaté pour développement :

\\\json

{

"status": "success",

"data": {

"users": [

{

"id": 1,

"name": "Alice"

}

]

}

}

\\\

Fichiers de données

Formaté pour lisibilité :

\\\json

{

"produits": [

{

"id": "P001",

"nom": "Laptop",

"prix": 999.99,

"enStock": true

},

{

"id": "P002",

"nom": "Souris",

"prix": 25.99,

"enStock": true

}

]

}

\\\

Conclusion

Le formatage JSON correct est crucial pour :

  • Lisibilité : Code facile à comprendre
  • Maintenance : Modifications simplifiées
  • Collaboration : Standards d'équipe
  • Qualité : Moins d'erreurs

Points clés à retenir :
  • Utilisez une indentation cohérente (2 ou 4 espaces)
  • Automatisez le formatage avec des outils
  • Validez toujours votre JSON
  • Configurez votre éditeur correctement
  • Établissez des conventions d'équipe
  • Maîtrisez ces techniques et votre code JSON sera toujours propre, lisible et professionnel.

    Share:

    Articles Connexes

    Read in English