Skip to content

Convertisseur JSON vers TOML

Collez du JSON, obtenez du TOML instantanément dans le navigateur. Gestion sûre des null, table racine vérifiée, sortie prête pour Cargo.toml. 100% privé.

Sans pistage Fonctionne dans le navigateur Gratuit
0 caractères
TOML Sortie
0 lignes
Vérifié pour la conformité à la spécification TOML 1.0.0, l'exigence de table racine et la gestion transparente des null — Équipe d'ingénierie Go Tools · 2 juil. 2026

Qu'est-ce que le TOML et pourquoi convertir depuis JSON ?

TOML (Tom's Obvious, Minimal Language) est un format de fichier de configuration bâti pour être sans ambiguïté et facile à lire et à éditer par des humains. C'est le format de configuration standard de l'écosystème Rust (Cargo.toml), de l'empaquetage Python moderne (pyproject.toml) et d'outils comme Hugo, Netlify, Poetry et Foundry. JSON est le format machine universel que produisent les outils et les API. Convertir le JSON en TOML est courant lorsque vous avez des données structurées en JSON mais qu'il vous faut une config TOML éditable par un humain comme destination — générer un Cargo.toml ou un pyproject.toml, ou transformer les réglages JSON d'une application en un fichier de config lisible.

TOML est plus structuré que JSON, et cet outil transforme cette rigueur en accompagnement plutôt qu'en échecs cryptiques :

**1. Exigence de table racine.** Chaque document TOML est une table à la racine — un tableau ou un scalaire nu n'est pas du TOML valide. Au lieu d'émettre une sortie invalide pour une entrée { tableau de premier niveau }, cet outil le détecte et vous indique exactement comment envelopper vos données sous une clé, pour toujours obtenir un TOML valide ou une explication claire.

**2. Gestion des null sûre et transparente.** JSON a null ; TOML non. La plupart des convertisseurs plantent ou écartent silencieusement les données. Cet outil est explicite : les clés d'objet à valeur null sont supprimées et les clés retirées sont listées dans un avertissement, et un null dans un tableau — qui n'a aucune représentation TOML valide — produit une erreur précise pointant le chemin. Vous n'êtes jamais surpris par des données manquantes.

**3. Sortie TOML idiomatique.** Les objets imbriqués deviennent des [tables], les objets profondément imbriqués deviennent des tables pointées ([tool.ruff]), et les tableaux d'objets deviennent des tableaux de tables ([[section]]) — la forme qu'utilisent les vrais fichiers Cargo.toml et pyproject.toml. La conversion est propulsée par la bibliothèque smol-toml sans dépendance, conforme à TOML 1.0.0.

**4. Confidentialité 100% dans le navigateur.** Votre JSON — qui peut contenir des identifiants, des jetons ou des détails de services internes — ne quitte jamais votre navigateur. Aucun téléversement, aucun serveur, aucune journalisation. Confirmez-le dans l'onglet Réseau de votre navigateur.

Besoin du sens inverse ? Utilisez le convertisseur TOML vers JSON. Vous travaillez avec d'autres formats de configuration ? Essayez le convertisseur JSON vers YAML et le convertisseur YAML vers JSON, ou nettoyez d'abord votre entrée JSON avec le formateur JSON. Chaque format a sa niche : JSON pour l'échange machine, TOML pour la configuration d'application et d'outillage éditée par des humains, et YAML pour les manifestes d'infrastructure profondément imbriqués. Ce convertisseur vous permet de passer de JSON à TOML sans écrire une seule ligne de code.

// Convert JSON to TOML in Node.js using the smol-toml library
import { stringify } from 'smol-toml';

const data = JSON.parse(`{
  "package": { "name": "my-app", "version": "1.0.0" },
  "dependencies": { "serde": { "version": "1.0" } }
}`);

// The top-level value must be an object; null values on objects are dropped.
const toml = stringify(data);

console.log(toml);
// [package]
// name = "my-app"
// version = "1.0.0"
//
// [dependencies.serde]
// version = "1.0"

Fonctionnalités clés

Conversion en direct

La sortie TOML se met à jour instantanément au fur et à mesure que vous saisissez ou collez du JSON — aucun bouton Convertir nécessaire. Les grandes entrées (>200 Ko) basculent automatiquement en mode manuel pour garder le navigateur réactif.

Accompagnement pour la table racine

Les documents TOML doivent être une table à la racine. Si le niveau supérieur de votre JSON est un tableau ou un scalaire, l'outil vous indique exactement comment l'envelopper sous une clé — aucune sortie invalide, aucune devinette.

Gestion sûre des null

TOML n'a pas de null. Les clés d'objet à valeur null sont supprimées et listées dans un avertissement ; un null dans un tableau déclenche une erreur précise pointant le chemin. Vous savez toujours ce qui est arrivé à vos données.

Sortie TOML idiomatique

Les objets imbriqués deviennent des [tables], les objets profondément imbriqués deviennent des tables pointées ([tool.ruff]), et les tableaux d'objets deviennent des tableaux de tables ([[section]]) — la forme qu'utilisent les vrais Cargo.toml et pyproject.toml.

Conscience des flottants et des entiers

TOML sépare les entiers des flottants, un flottant comme 1.0 est donc écrit comme l'entier 1. L'outil vous avertit lorsque cette coercition change le type d'une valeur, pour que les surprises d'aller-retour soient visibles.

Confidentialité 100% dans le navigateur

Toute l'analyse s'exécute localement dans votre navigateur. Votre JSON — y compris les identifiants, les jetons et les détails de services internes — n'est jamais téléversé, stocké ni journalisé.

Exemples

Source Cargo.toml

{
  "package": {
    "name": "my-app",
    "version": "1.0.0",
    "edition": "2021"
  },
  "dependencies": {
    "serde": { "version": "1.0", "features": ["derive"] },
    "tokio": { "version": "1", "features": ["full"] }
  }
}

Générez un Cargo.toml de Rust à partir de JSON — les objets imbriqués deviennent des [tables] et les objets en ligne deviennent des tables en ligne, exactement comme Cargo l'attend.

Source pyproject.toml

{
  "build-system": {
    "requires": ["hatchling"],
    "build-backend": "hatchling.build"
  },
  "project": {
    "name": "my-package",
    "version": "0.3.1",
    "requires-python": ">=3.10",
    "dependencies": ["requests>=2.31", "pydantic>=2.0"]
  }
}

Générez un pyproject.toml PEP 621 à partir de métadonnées de projet JSON — utile lorsqu'un outil ou une API produit du JSON dont vous avez besoin sous forme TOML.

Réglages d'application

{
  "title": "My Service",
  "debug": false,
  "port": 8080,
  "database": {
    "host": "localhost",
    "port": 5432,
    "pool_size": 10
  },
  "features": ["auth", "metrics", "tracing"]
}

Convertissez un objet de réglages d'application plat en TOML — les scalaires de premier niveau restent en haut et l'objet database imbriqué devient une table [database].

Serveurs (tableau de tables)

{
  "servers": [
    { "name": "alpha", "ip": "10.0.0.1", "ports": [8001, 8002] },
    { "name": "beta", "ip": "10.0.0.2", "ports": [9001] }
  ]
}

Un tableau d'objets devient un tableau de tables ([[servers]]) en TOML — la façon idiomatique d'exprimer des sections répétées.

Source de config Netlify

{
  "build": {
    "command": "npm run build",
    "publish": "dist",
    "environment": { "NODE_VERSION": "20" }
  },
  "redirects": [
    { "from": "/old", "to": "/new", "status": 301, "force": true }
  ]
}

Transformez une config de déploiement JSON en netlify.toml, avec des tables imbriquées [build] et [build.environment] et un tableau de tables [[redirects]].

Config à structure pointée

{
  "tool": {
    "ruff": { "line-length": 100, "target-version": "py310" },
    "black": { "line-length": 100 }
  }
}

Les objets JSON profondément imbriqués deviennent des tables TOML pointées comme [tool.ruff] et [tool.black] — la forme qu'attend l'outillage pyproject.toml.

Comment l'utiliser

  1. 1

    Collez votre JSON

    Saisissez ou collez votre JSON dans le champ de saisie ci-dessus. Vous pouvez aussi cliquer sur « Charger un exemple » pour essayer une source Cargo.toml, une source pyproject.toml ou un objet de réglages d'application.

  2. 2

    Voyez la sortie TOML en direct

    Le TOML apparaît instantanément dans le panneau de sortie. Si votre JSON a un tableau de premier niveau ou des valeurs null, l'outil explique exactement quoi faire au lieu de produire une sortie invalide.

  3. 3

    Copiez ou téléchargez

    Cliquez sur Copier pour placer le TOML dans votre presse-papiers, ou sur Télécharger pour l'enregistrer en fichier .toml prêt pour Cargo, Poetry, Hugo, Netlify ou tout outil qui lit du TOML.

Pièges JSON vers TOML courants

Tableau ou scalaire de premier niveau

Les documents TOML doivent être une table (objet) à la racine. Un tableau JSON ou une valeur isolée ne peut pas être un document TOML. Enveloppez-le sous une clé pour le convertir.

✗ Incorrect
[1, 2, 3]
✓ Correct
{ "items": [1, 2, 3] }

Valeurs null dans les objets

TOML n'a pas de type null, une clé d'objet à valeur null est donc supprimée lors de la conversion. L'outil vous avertit des clés retirées. Si vous devez garder la clé, donnez-lui une valeur réelle ou une chaîne vide.

✗ Incorrect
{ "name": "a", "nickname": null }
✓ Correct
{ "name": "a", "nickname": "" }

Null dans un tableau

Un tableau TOML ne peut pas contenir de null ni de vide, un JSON comme [1, null, 3] n'a donc aucune sortie TOML valide. Retirez le null ou remplacez-le par une valeur réelle avant la conversion.

✗ Incorrect
{ "ports": [8001, null, 8003] }
✓ Correct
{ "ports": [8001, 8003] }

Syntaxe JSON invalide

L'entrée doit d'abord être du JSON valide. Les virgules finales, les guillemets simples et les clés sans guillemets sont des erreurs courantes copiées de JavaScript qui ne sont pas du JSON valide et doivent être corrigées avant la conversion.

✗ Incorrect
{ 'name': 'a', 'active': true, }
✓ Correct
{ "name": "a", "active": true }

Un flottant à fraction nulle devient un entier

TOML écrit un flottant dont la partie fractionnaire est nulle (1.0) comme l'entier 1, changeant son type lors d'un aller-retour. L'outil vous avertit. Si la valeur est conceptuellement un entier, c'est très bien ; si elle doit rester un flottant, TOML ne peut pas préserver cela pour les nombres entiers.

✗ Incorrect
{ "ratio": 1.0 }  →  ratio = 1
✓ Correct
{ "ratio": 1.5 }  →  ratio = 1.5

Mélanger objet et tableau sur la même clé

Une clé JSON doit être systématiquement un objet ou un tableau pour correspondre à une table ou un tableau de tables. Des formes incohérentes à travers un jeu de données peuvent produire un TOML déroutant — normalisez d'abord la structure.

✗ Incorrect
{ "server": { "a": 1 }, "server": [1] }
✓ Correct
{ "server": { "a": 1 }, "servers": [1] }

Cas d'usage courants

Générer un Cargo.toml
Transformez du JSON structuré — issu d'un outil d'échafaudage, d'une API ou d'un script — en un Cargo.toml de Rust valide, avec des tables [dependencies] imbriquées et des tables en ligne produites automatiquement.
Générer un pyproject.toml
Convertissez des métadonnées de projet JSON en un pyproject.toml PEP 621, y compris les tables pointées [tool.*], pour qu'un outillage qui émet du JSON puisse produire une config d'empaquetage Python.
Config éditable par un humain à partir de JSON
Transformez les réglages JSON d'une application en un fichier de config TOML lisible que les humains peuvent éditer confortablement, avec des commentaires ajoutés ensuite à la main.
Génération de config de déploiement
Produisez netlify.toml, foundry.toml ou des configs de plateforme similaires à partir de JSON, en transformant les objets imbriqués et les tableaux d'objets en les tables et tableaux de tables qu'attendent ces outils.
Migration de format de configuration
Déplacez une configuration d'un système fondé sur JSON vers un système fondé sur TOML, en utilisant ce convertisseur comme pont et les avertissements sur les null et le niveau supérieur pour repérer tout ce qui ne se mappe pas.
Prototypage de structure TOML
Esquissez une config en JSON — un format que la plupart des développeurs tapent avec aisance — puis convertissez en TOML pour voir la disposition idiomatique en tables et tableaux de tables avant de la valider dans un dépôt.

Détails techniques

Analyse JSON RFC 8259
L'entrée JSON est analysée avec le JSON.parse() natif du navigateur, entièrement conforme à la RFC 8259. Avant la sérialisation, l'outil vérifie que la valeur de premier niveau est un objet et recherche les valeurs null pour pouvoir avertir des clés d'objet supprimées ou rejeter un null dans un tableau avec un chemin précis.
Sortie TOML 1.0.0 via smol-toml
Le TOML est généré avec la bibliothèque smol-toml, un sérialiseur sans dépendance et entièrement conforme à TOML 1.0.0. Les objets imbriqués deviennent des tables, les objets profondément imbriqués deviennent des tables pointées, et les tableaux d'objets deviennent des tableaux de tables. Les flottants à partie fractionnaire nulle sont écrits comme des entiers selon les règles TOML, avec un avertissement.
100% dans le navigateur — aucun téléversement, aucun serveur
Tout le traitement se déroule dans le moteur JavaScript de votre navigateur. Aucune donnée n'est transmise à aucun moment. Les entrées de plus de 200 Ko passent du mode direct au mode manuel (un clic explicite sur Convertir) pour garder l'interface réactive.

Bonnes pratiques

Enveloppez les tableaux de premier niveau sous une clé
Si vos données sont naturellement un tableau JSON, enveloppez-les dans un objet avec une clé descriptive ({ "items": [...] }) avant la conversion. Les documents TOML doivent être une table à la racine, et la clé donne à votre tableau un nom clair dans la sortie.
Décidez de ce que doivent signifier les null
Avant la conversion, décidez si un champ null doit disparaître (supprimer la clé) ou porter une valeur. TOML supprimera les null d'objet et rejettera les null de tableau, résoudre ces cas dans votre JSON d'abord donne une sortie prévisible et complète.
Utilisez des objets imbriqués pour regrouper
Regroupez les réglages liés dans des objets imbriqués dans votre JSON — ils deviennent des [tables] propres et des tables pointées en TOML, bien plus lisibles qu'une liste plate de clés, à l'image de l'organisation des configs Cargo et pyproject.
Validez d'abord votre JSON
Si votre JSON est écrit à la main ou provient d'une source peu fiable, validez-le avec notre formateur JSON pour repérer les virgules finales et les erreurs de guillemets avant de convertir en TOML.
Ajoutez des commentaires après la conversion
JSON n'a pas de commentaires, aucun n'est donc reporté. Comme TOML prend en charge les commentaires #, ajoutez de la documentation au TOML généré à la main — l'une des principales raisons de faire passer une config éditée par des humains vers TOML au départ.

Questions fréquentes

Comment convertir du JSON en TOML en ligne ?
Collez votre JSON dans le champ de saisie ci-dessus. L'outil l'analyse et produit du TOML instantanément dans votre navigateur — aucun clic sur un bouton n'est nécessaire. Une fois le TOML affiché dans la zone de sortie, cliquez sur Copier pour le placer dans votre presse-papiers ou sur Télécharger pour l'enregistrer en fichier .toml. Tout s'exécute localement, votre JSON ne quitte donc jamais votre appareil. Deux points à connaître avant de commencer : le niveau supérieur de votre JSON doit être un objet (pas un tableau), et les valeurs null n'ont pas d'équivalent TOML — l'outil explique clairement les deux cas s'ils se présentent.
Qu'est-ce que le TOML et pourquoi convertir du JSON vers celui-ci ?
TOML (Tom's Obvious, Minimal Language) est un format de configuration conçu pour être facile à lire et à écrire par des humains, avec une sémantique sans ambiguïté. C'est le format de configuration de Cargo pour Rust, du pyproject.toml de Python, de Hugo, Netlify, Poetry et plus encore. On convertit le JSON en TOML lorsqu'un outil ou une API vous donne du JSON mais que la destination attend du TOML — par exemple, générer un Cargo.toml ou un pyproject.toml à partir de données structurées, ou transformer les réglages JSON d'une application en un fichier de config TOML éditable par un humain.
Pourquoi le niveau supérieur de mon JSON doit-il être un objet ?
Les documents TOML sont toujours une table (un ensemble de paires clé-valeur) à la racine — la spécification n'autorise pas un tableau, une chaîne ou un nombre nu au niveau supérieur. Ainsi, un tableau JSON comme [1, 2, 3] ou une valeur isolée comme 42 ne peut pas être converti directement. La solution est de l'envelopper sous une clé : { "items": [1, 2, 3] } se convertit proprement en items = [1, 2, 3]. Cet outil détecte un niveau supérieur non-objet et vous indique exactement comment l'envelopper, au lieu de produire une sortie invalide.
Qu'advient-il des valeurs null lors de la conversion de JSON en TOML ?
TOML n'a pas de type null, null ne peut donc pas être représenté. Cet outil gère cela de manière sûre et transparente de deux façons. Lorsqu'un null apparaît comme valeur d'objet, TOML omet simplement cette clé — et l'outil affiche un avertissement listant exactement quelles clés ont été supprimées, pour que vous ne soyez jamais surpris par une perte de données silencieuse. Lorsqu'un null apparaît dans un tableau, il n'existe aucune sortie TOML valide (un tableau ne peut pas contenir de vide), l'outil signale donc une erreur pointant le chemin exact du null fautif. Dans les deux cas, vous savez précisément ce qui s'est passé et où.
Comment les objets et tableaux imbriqués sont-ils convertis en TOML ?
Un objet JSON imbriqué devient une table TOML : { "owner": { "name": "Tom" } } devient [owner] avec name = "Tom". Les objets profondément imbriqués deviennent des tables pointées comme [tool.ruff]. Un tableau d'objets devient un tableau de tables écrit avec des doubles crochets ([[servers]]), la façon idiomatique en TOML d'exprimer des sections répétées. Les tableaux de scalaires restent en ligne comme des tableaux (ports = [8001, 8002]). La sortie suit la spécification TOML 1.0.0.
Qu'advient-il des nombres à virgule flottante comme 1.0 ?
TOML distingue les entiers des flottants, et un flottant dont la partie fractionnaire est nulle (comme 1.0) est écrit comme l'entier 1. Ainsi, { "version": 1.0 } devient version = 1. L'outil affiche un petit avertissement lorsque cette coercition se produit, car elle change le type de la valeur lors d'un aller-retour. Si vous avez besoin que la valeur reste un flottant, cette distinction ne peut pas être préservée par TOML pour les nombres entiers — demandez-vous si c'est bien un entier que vous voulez.
Mes données JSON sont-elles envoyées à un serveur ?
Non. Toute l'analyse et la conversion se déroulent entièrement dans votre navigateur à l'aide de JavaScript. Votre JSON n'est jamais téléversé, jamais stocké et jamais journalisé. Cela rend l'outil sûr pour une configuration contenant des clés d'API, des identifiants de base de données ou des détails de services internes. Vous pouvez le vérifier en ouvrant l'onglet Réseau de votre navigateur — coller du JSON ne déclenche aucune requête réseau.
Puis-je reconvertir du TOML en JSON ?
Oui. Utilisez le convertisseur TOML vers JSON associé pour le sens inverse, ou cliquez sur le bouton Inverser le sens en haut de cet outil pour permuter l'entrée et la sortie sur place. La conversion TOML vers JSON a moins de contraintes — elle accepte tout TOML valide — si bien qu'un aller-retour JSON → TOML → JSON est fiable tant que votre JSON n'avait au départ ni null ni tableau de premier niveau.
Comment convertir du JSON en TOML en ligne de commande ?
Une option populaire est l'outil Go « yj » (yj -jt lit du JSON et écrit du TOML). En Python, vous pouvez utiliser le paquet tiers « tomli-w » : import json, tomli_w; tomli_w.dump(json.load(open('config.json')), open('config.toml','wb')). En Node.js : import { stringify } from 'smol-toml'; const toml = stringify(JSON.parse(text)) — la même bibliothèque que celle utilisée par cet outil. Pour un usage ponctuel rapide sans rien installer, cet outil de navigateur est le chemin le plus court.
Comment convertir du JSON en TOML en Python, Rust ou Node.js ?
En Python : import json, tomli_w; tomli_w.dump(json.load(open('config.json')), open('config.toml','wb')). En Rust : utilisez serde_json et toml — let value: serde_json::Value = serde_json::from_str(&text)?; let toml = toml::to_string_pretty(&value)?. En Node.js : import { stringify } from 'smol-toml'; const toml = stringify(JSON.parse(text)) — c'est exactement l'approche utilisée par cet outil. Rappelez-vous que la valeur de premier niveau doit être un objet dans tous ces cas.
Le convertisseur préserve-t-il l'ordre des clés ?
Les clés au sein d'une table sont préservées dans leur ordre d'origine, mais la structure TOML exige que toutes les paires clé-valeur simples d'une table précèdent tout en-tête de table enfant. Ainsi, les scalaires de premier niveau sont émis en premier, puis les tables et tableaux de tables — le convertisseur ne réordonne que là où la grammaire TOML l'exige. Les données sont identiques ; seul l'ordre textuel des sections de table change pour produire un TOML valide.
Y a-t-il une limite de taille de fichier pour l'entrée JSON ?
Il n'y a pas de limite stricte, mais les entrées de plus de 200 Ko passent de la conversion en direct au mode manuel : un bouton Convertir apparaît et la conversion ne s'exécute que lorsque vous cliquez, ce qui garde le navigateur réactif. Les charges de configuration typiques se convertissent en bien moins de 50 millisecondes.