Blog
Français

Formater du JSON en ligne — indenter, minifier et valider

Indentez, minifiez et validez du JSON, triez les clés, erreurs avec ligne et colonne

Traitement dans le navigateur · aucun envoi de fichier

Résultat

Présentation

Un formateur JSON transforme une longue ligne de JSON en texte lisible et indenté, ou supprime au contraire tous les espaces facultatifs pour le rendre plus compact. Il sert à inspecter une réponse d’API, à mettre au propre un fichier de configuration ou à repérer l’endroit où la syntaxe s’est cassée. Le résultat se met à jour pendant la saisie : aucun bouton à cliquer.

Mode d’emploi

  1. Collez votre JSON dans la zone de saisie.
  2. Choisissez une indentation de 2 espaces, de 4 espaces ou par tabulation, ou bien Minifier.
  3. Activez Trier les clés si vous voulez classer les clés par code de caractère. Le tri s’applique aussi aux objets imbriqués dans des objets et dans des tableaux.
  4. Copiez le résultat. En cas d’erreur, la ligne et la colonne s’affichent : commencez la correction à cet endroit.

Fonctionnement

  • La grammaire est celle du JSON selon la RFC 8259 (ECMA-404) : clés et chaînes uniquement entre guillemets doubles, pas de commentaires, pas de virgules finales.
  • Les positions d’erreur sont des lignes et des colonnes numérotées à partir de 1. \n, \r\n et un \r isolé comptent chacun pour un saut de ligne. Les colonnes comptent des caractères (points de code) : un emoji occupe une seule colonne, et le circonflexe sous la ligne fautive reproduit les tabulations. Les nombres qui débordent vers Infinity (comme 1e999) deviennent null avec un avertissement, et une imbrication de plus de 512 niveaux est refusée avec un message explicite.
  • Le tri des clés s’applique à tous les niveaux, dans l’ordre des unités de code (majuscules avant minuscules), sans toucher à l’ordre des tableaux. Si une clé apparaît deux fois dans un même objet ({"a":1,"a":2}), les règles du JSON ne conservent que la dernière valeur : le résultat est produit quand même, mais un avertissement indique la clé ainsi que la ligne et la colonne où elle se répète. En raison du fonctionnement des objets JavaScript, les clés de forme entière comme "1" et "2" passent toujours en premier, dans l’ordre numérique, quelle que soit l’option choisie.
  • La sortie conserve tels quels les caractères accentués, coréens, chinois et les emojis, et n’échappe que ce que le JSON impose, comme \n et \". Une séquence Unicode comme "A" est réécrite en "A".
  • Les nombres sont lus comme des Number JavaScript. Les entiers au-delà de 2^53 ne sont pas conservés exactement, et un avertissement vous le signale.

Exemples

Entrée Option Résultat
{"b":1,"a":{"d":2,"c":3}} Minifier + trier les clés {"a":{"c":3,"d":2},"b":1}
{"name":"홍길동"} 2 espaces plusieurs lignes, "name": "홍길동"
{"a": 1,} — ligne 1, colonne 9 : caractère inattendu }
{"id": 12345678901234567890} Minifier {"id":12345678901234567000} (avec avertissement)

Questions fréquentes

Vais-je voir où le JSON est cassé ?

Oui. L’outil parcourt l’entrée depuis le début et indique la ligne et la colonne du premier caractère qui enfreint les règles, en affichant cette ligne avec un accent circonflexe (^) sous l’endroit exact. Il calcule la position lui-même au lieu de s’appuyer sur le message d’erreur du navigateur, si bien que tous les navigateurs donnent la même réponse.

Les commentaires ou les virgules finales sont-ils acceptés ?

Non. Seul le JSON strict défini par la RFC 8259 est accepté. Les commentaires, les virgules finales, les chaînes entre apostrophes et les clés sans guillemets sont signalés comme erreurs, avec leur emplacement.

Les très grands nombres peuvent-ils changer ?

Oui. L’outil utilise l’analyseur JSON de JavaScript : les entiers supérieurs à 9007199254740991 (2^53-1) sont arrondis à la valeur représentable la plus proche. Un avertissement s’affiche lorsque l’entrée contient un tel nombre. Mettez les identifiants de cette taille entre guillemets si chaque chiffre compte.

Mon JSON est-il envoyé à un serveur ?

Non. Tout s’exécute dans votre navigateur ; rien n’est envoyé ni enregistré.

Il vous manque un outil ?