Formateur et validateur JSON
S’exécute dans votre navigateur ; rien n’est envoyé
Formatez, validez et minifiez du JSON. Les erreurs indiquent la ligne et la colonne exactes.
Input
Formatted JSON appears here as you type.
Ce que fait le formateur
Le JSON est le format qu’utilisent la plupart des API web pour le corps des requêtes et des réponses. Les serveurs l’envoient généralement minifié, sans espaces ni retours à la ligne : c’est compact mais difficile à lire. Formater (pretty-print) ajoute une indentation pour voir quelles clés appartiennent à quel objet ; minifier la retire.
Pour formater du JSON, l’outil doit l’analyser, donc formater revient aussi à valider. Si le texte n’est pas du JSON valide, vous obtenez la ligne et la colonne où l’analyse s’est arrêtée, ce qui était attendu à cet endroit et la cause habituelle. Les commentaires, les virgules finales, les guillemets simples, les clés sans guillemets et les True/None de Python peuvent être corrigés pour vous : l’outil liste d’abord chaque modification et n’applique rien avant votre confirmation.
Ici, formater ne change jamais une valeur. L’outil utilise son propre parseur plutôt que JSON.parse : les nombres gardent les chiffres avec lesquels ils ont été écrits (12345678901234567890 et 1.50 restent tels quels), les séquences d’échappement comme \u00e9 restent des échappements, et les clés en double restent à leur place. Quand un document contient des données que JSON.parse modifierait, comme des entiers au-delà de 2^53 ou une clé qui apparaît deux fois, l’Inspector les liste sous Data warnings.
Comment utiliser cet outil
- 1Collez du JSON dans le panneau Input, déposez-y un fichier
.jsonou appuyez sur Ctrl+O pour en ouvrir un (jusqu’à 5 Mo). Examples propose des échantillons à essayer. - 2L’onglet Output affiche le résultat pendant la saisie. Choisissez l’indentation (2 espaces, 4 espaces ou tabulations), triez les clés ou passez de Pretty à Minified. Les flèches dans la marge replient les objets et les tableaux.
- 3Pour réécrire l’entrée elle-même, utilisez Format (Shift+Alt+F) ou Minify (Shift+Alt+M). Ctrl+Z annule l’un comme l’autre, ainsi que Clear et les corrections appliquées.
- 4Si le JSON est invalide, la barre d’état et l’onglet Output indiquent où. Appuyez sur F8 pour placer le curseur sur l’erreur, ou sur Review fixes pour voir les réparations automatiques.
- 5Tree, Table, JSONPath et Compare présentent les mêmes données autrement : sélectionnez un nœud de l’arbre pour copier son chemin ou sa valeur, interrogez avec une expression comme
$.items[?(@.price < 10)].id, ou collez un second document pour lister ce qui a changé. - 6Copiez la sortie, ou téléchargez-la formatée ou minifiée (Ctrl+S). Appuyez sur ? pour voir tous les raccourcis clavier.
Dépannage
- Virgule finale : supprimez la
,avant} - Le JSON n’autorise pas de virgule après le dernier élément d’un objet ou d’un tableau. Supprimez-la ou utilisez Review fixes. Elle vient généralement de code JavaScript ou d’un fichier de configuration écrit à la main.
- Les noms de propriétés doivent être entre guillemets doubles
- Le texte est un littéral d’objet JavaScript (
{name: 'x'}), pas du JSON. Chaque clé et chaque chaîne doit être entre guillemets doubles. Review fixes les ajoute. Truevient de Python ; le JSON utilisetrue- Les données ont été affichées avec
print()oustr()de Python. Utilisezjson.dumps()pour produire du JSON, ou laissez Review fixes remplacerTrue,FalseetNone. - Fin d’entrée inattendue : l’objet ouvert à la ligne 1 n’est pas fermé
- Le texte s’arrête avant que chaque
{et[soit fermé. Une réponse copiée a probablement été tronquée ; copiez-la à nouveau, ou enregistrez-la dans un fichier et ouvrez celui-ci. - Contenu inattendu après la valeur JSON
- Il y a deux valeurs JSON ou plus à la suite. Regroupez-les dans un tableau ou, pour des logs en JSON délimité par des retours à la ligne (NDJSON), vérifiez une ligne à la fois.
- Le texte commence par une marque d’ordre des octets (BOM)
- Le fichier a été enregistré en « UTF-8 avec BOM ». Beaucoup de parseurs rejettent cette marque invisible au début. Enregistrez-le en UTF-8 simple, ou utilisez Review fixes pour la retirer.
- Une chaîne ne peut pas s’étendre sur plusieurs lignes
- Une chaîne contient un vrai retour à la ligne, souvent après avoir collé du texte qui en contenait. Remplacez le retour par
\n. - Un nombre dans votre code diffère de celui du JSON
- Les entiers supérieurs à 9 007 199 254 740 991 perdent en précision quand JavaScript les analyse : un identifiant de 19 chiffres peut donc changer. Cet outil affiche les chiffres tels qu’écrits et vous avertit ; dans votre API, envoyez ces identifiants sous forme de chaînes.
Questions fréquentes
Mon JSON est-il envoyé quelque part ?
Non. L’analyse, le formatage et toutes les vues fonctionnent dans l’onglet de votre navigateur. Pour survivre à un rechargement, ce que vous collez est conservé dans le session storage de cet onglet jusqu’à ce que vous l’effaciez ou fermiez l’onglet. Copy link place l’entrée dans le lien après le #, une partie que les navigateurs n’envoient jamais à un serveur, mais toute personne à qui vous donnez le lien peut la lire. Vos réglages, comme l’indentation, sont enregistrés dans ce navigateur.
Le formatage modifie-t-il mes données ?
Non. Les valeurs sont recopiées exactement telles qu’écrites, y compris les grands nombres, les échappements et les clés en double. Deux options modifient volontairement le texte : Sort keys réordonne les clés (par code de caractère, donc les majuscules avant les minuscules) et Minify retire les espaces en dehors des chaînes.
Que deviennent les clés en double ?
Elles sont conservées et affichées telles qu’écrites, avec un avertissement. La norme JSON ne définit pas le comportement des clés en double ; JSON.parse et la plupart des bibliothèques ne gardent que la dernière valeur, donc le code qui lit ce document n’en verra probablement qu’une. Les vues Table, Compare et JSONPath suivent la même règle : la dernière l’emporte.
Quelle syntaxe JSONPath est prise en charge ?
La syntaxe courante de Goessner : $ pour la racine, .key et ['key'], les index (négatifs compris), [*] et .. pour la descente récursive, les unions comme [0,2], les tranches comme [1:3] et les filtres comme [?(@.price < 10 && @.inStock)]. Les filtres comparent les nombres comme des nombres JavaScript, donc les entiers au-delà de 2^53 sont comparés de façon approximative.
Quelle taille de fichier peut-il traiter ?
Les fichiers jusqu’à 5 Mo s’ouvrent directement. Un document d’environ 4 Mo est vérifié et formaté en une fraction de seconde sur un ordinateur portable courant ; au-delà d’environ 200 Ko, l’outil attend une pause dans la saisie avant de vérifier à nouveau. Une imbrication de plus de 2 000 niveaux est signalée comme une erreur.