Utilia

Convertisseur TOML en JSON

Convertissez du TOML en JSON et du JSON en TOML dans votre navigateur : tables, tableaux de tables, dates et entiers 64 bits pris en charge.

Conversion

Comment convertir du TOML en JSON

  1. Choisissez le sens : TOML → JSON (par défaut) ou JSON → TOML.
  2. Collez vos données ou cliquez sur Ouvrir un fichier pour charger un fichier .toml ou .json (10 Mo au maximum).
  3. Dans le sens TOML → JSON, choisissez l’Indentation (2 ou 4 espaces) et cochez au besoin Grands entiers en chaînes. Dans le sens JSON → TOML, gardez ou décochez Ignorer les valeurs null.
  4. Cochez Trier les clés pour classer chaque table par ordre alphabétique.
  5. Le résultat se met à jour pendant la saisie ; Convertir relance la conversion. En cas d’erreur, le message indique la ligne et la colonne.
  6. Copiez ou téléchargez le résultat. Inverser le sens renvoie le résultat dans la zone de saisie pour la conversion inverse.

TOML et JSON : la correspondance

TOML (Tom’s Obvious Minimal Language) est le format de configuration de Cargo.toml en Rust, de pyproject.toml en Python, des sites Hugo ou Netlify et de nombreux outils en ligne de commande. Pensé pour être lu et modifié à la main, il décrit exactement le même genre d’arbre que JSON : des tables (objets), des tableaux et des valeurs.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

devient

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Un en-tête [table] devient un objet JSON, et une clé pointée comme a.b.c = 1 devient des objets imbriqués.
  • Un tableau de tables, [[bin]], devient un tableau JSON d’objets.
  • Les tables en ligne { x = 1 } et les tableaux se convertissent tels quels. Les commentaires disparaissent, puisque JSON n’en a pas.

Là où les deux formats diffèrent

Dates et heures. TOML possède quatre types date-heure natifs, JSON aucun. L’outil les écrit en chaînes ISO 8601 en conservant leur nature : une date-heure avec décalage reste 1979-05-27T07:32:00.000-08:00, une date locale reste 1979-05-27 et une heure locale 07:32:00.000. Les fractions de seconde sont conservées à la milliseconde près. Dans l’autre sens, ces valeurs redeviennent de simples chaînes, car rien en JSON ne les signale comme des dates.

Entiers. Les entiers TOML sont signés sur 64 bits, de −9 223 372 036 854 775 808 à 9 223 372 036 854 775 807. Or les nombres JavaScript, utilisés par la plupart des analyseurs JSON, ne sont exacts que jusqu’à 2^53 (9 007 199 254 740 991). Les entiers plus grands sont écrits avec tous leurs chiffres, ce qui reste du JSON valide, mais un programme qui les lit comme des nombres à virgule flottante les arrondira : cochez Grands entiers en chaînes pour l’éviter. Un entier hors de la plage 64 bits est refusé, comme l’exige la spécification TOML.

Flottants spéciaux. inf, -inf et nan n’existent pas en JSON : ils deviennent les chaînes "inf", "-inf" et "nan".

JSON → TOML. Un document TOML est toujours une table : le JSON doit donc être un objet au premier niveau. TOML ne connaît pas null : par défaut, les valeurs null sont retirées et un message indique combien ; décochez Ignorer les valeurs null pour obtenir plutôt une erreur qui situe la première. JSON ne distingue pas 1 de 1.0 : les nombres entiers deviennent des entiers TOML, et ceux qui dépassent 64 bits deviennent des flottants. Dans les navigateurs récents, les grands entiers de votre JSON gardent leurs chiffres exacts.

Questions fréquentes

Ma configuration est-elle envoyée quelque part ?

Non. La conversion se fait entièrement dans votre navigateur : les clés d’API ou les secrets de vos fichiers de configuration ne quittent jamais votre ordinateur.

Pourquoi l'ordre de mes clés a-t-il changé dans le TOML ?

TOML impose que les paires clé-valeur simples précèdent les sous-tables dans chaque table. L’outil écrit donc d’abord les valeurs, puis les [tables], puis les [[tableaux de tables]]. Les données restent identiques.

Les commentaires TOML sont-ils conservés ?

Non. JSON n’a pas de commentaires : ils sont perdus dans le sens TOML → JSON et il n’y a rien à restaurer au retour.

Quelle version de TOML est prise en charge ?

TOML 1.0, avec les clés pointées, les tables en ligne, les tableaux de tables, les entiers hexadécimaux, octaux et binaires, ainsi que les quatre types date-heure.

Pourquoi ma date devient-elle une chaîne en JSON ?

JSON n’a pas de type date. La chaîne ISO 8601 est la convention habituelle, et la plupart des langages savent la lire directement.