Convertisseur TOML vers JSON

Collez du TOML à gauche, obtenez du JSON à droite. Tables vers objets, tableaux de tables vers tableaux. Sans upload.

  1. Collez votre TOML dans la zone de texte de gauche.
  2. Cliquez sur « Convertir en JSON ». La sortie est un objet JSON préservant l'imbrication des tables.
  3. Copiez le résultat ou téléchargez-le en data.json.
  4. Les valeurs date-heure sont converties en chaînes ISO 8601 ; les soulignements dans les nombres sont retirés.
Que fait-il ?

Parse un document TOML 1.0 en objet JSON. Les tables `[section]` deviennent des objets imbriqués ; les tableaux de tables `[[items]]` deviennent des tableaux JSON. Chaînes, entiers (y compris les littéraux hex/octal/binaire et les soulignements de groupage), flottants, booléens, dates, dates-heure et heures se mappent vers des représentations équivalentes en JSON. Les tables et tableaux inline sont aplatis de la même manière.

Exemple

Entrée TOML :

name = "Ada"
active = true

[address]
city = "London"

Sortie JSON :

{
  "name": "Ada",
  "active": true,
  "address": {
    "city": "London"
  }
}

Erreurs TOML courantes et comment les corriger

TOML a des règles plus strictes que YAML ou JSON par endroits. Les motifs ci-dessous couvrent la plupart des échecs de parser.

  • Chaînes sans guillemets. `name = Ada` est invalide — les valeurs nues sont interprétées comme clés/booléens/nombres, pas chaînes. Utilisez des guillemets doubles : `name = "Ada"`.
  • Tableaux à types mixtes (TOML 0.x). TOML 0.5 interdisait les types mixtes dans les tableaux ; TOML 1.0 les permet. @iarna/toml suit 1.0, donc `[1, "two"]` est valide ici. Si votre TOML doit faire un aller-retour via des outils 0.5, gardez les tableaux homogènes.
  • Redéfinir une table. Définir `[a]` deux fois est une erreur. Chaque en-tête de table ne doit apparaître qu'au plus une fois. Fusionnez les clés dans un seul bloc `[a]`.
  • Date-heure sans fuseau horaire. `d = 2026-04-26T12:00:00` (pas de Z ni de décalage) est une « date-heure locale » — ça parse, mais JSON n'a pas de concept de localité. La sortie est la même chaîne avec l'heure murale, pas un instant UTC. Ajoutez `Z` pour UTC : `d = 2026-04-26T12:00:00Z`.
  • Confusion d'échappement avec triple guillemet. Les chaînes multi-lignes basiques TOML utilisent `"""..."""` et traitent les échappements ; les chaînes multi-lignes littérales utilisent `\'\'\'...\'\'\'` et non. Mélanger les règles d'échappement est l'erreur la plus courante des chaînes multi-lignes.
  • Extension de table inline. Une table inline `point = {x=1, y=2}` est fermée et auto-contenue — vous ne pouvez pas écrire ensuite `[point.z]` ni `point.z = 3`. Pour étendre, utilisez plutôt la syntaxe de bloc standard `[point]`.
Questions fréquentes

Comment les dates-heure sont-elles représentées en JSON ?

JSON n'a pas de type natif date-heure, donc les valeurs deviennent des chaînes ISO 8601. Les dates-heure avec décalage (`2026-04-26T12:00:00Z`) et locales (`2026-04-26T12:00:00`) sont toutes deux stringifiées littéralement — mais seule la forme avec décalage est non ambiguë en JSON.

Les soulignements d'entiers sont-ils préservés ?

Non — TOML permet `1_000_000` comme aide à la lisibilité ; le parser supprime les soulignements et la valeur JSON est `1000000`. Le groupage est purement une caractéristique du texte source TOML.

Que deviennent les commentaires TOML ?

Ils sont supprimés. Les commentaires TOML commencent par `#` ; JSON n'a pas de syntaxe de commentaires, donc le parser les jette. Pour les préserver, il faudrait un format intermédiaire différent.

Les tableaux de tables sont-ils supportés ?

Oui. Les blocs `[[products]]` répétés plusieurs fois deviennent un tableau JSON sous la clé `products`. Chaque en-tête `[[products]]` introduit une nouvelle entrée de tableau ; les lignes clé-valeur suivantes peuplent cette entrée.

Puis-je convertir de très grands fichiers TOML ?

Jusqu'à environ 30 Mo avant que le textarea ne ralentisse. Les très grands fichiers TOML sont rares — la plupart des fichiers de config sont bien en dessous de 1 Mo.

Mon TOML est-il téléchargé ?

Non. Tout s'exécute dans votre navigateur — vos données sont parsées par JavaScript sur cette page et ne sont jamais envoyées à un serveur.