Aller au contenu

Convertir JSON en TOML — Numio

Convertit un objet JSON en TOML. Les objets imbriqués deviennent des sections [table], les tableaux d’objets des [[array of tables]], et les clés à valeur null sont supprimées, car TOML n’a pas de null.

Transformer une configuration JSON en syntaxe pyproject.toml, Cargo.toml, wrangler.toml ou de configuration Hugo.

JSON

Quand l’utiliser

  • Transformer une configuration JSON en syntaxe pyproject.toml, Cargo.toml, wrangler.toml ou de configuration Hugo.
  • Transférer des paramètres générés en JSON par un script vers un fichier de configuration TOML.

Mode d’emploi

  1. Collez un objet JSON (la racine doit être un objet, pas un tableau) dans l’éditeur de gauche, ou utilisez le bouton de chargement de fichier pour ouvrir un fichier UTF-8.
  2. Vérifiez le TOML à droite : les clés scalaires viennent en premier, puis les sections [table] et [[array]].
  3. Copiez le résultat, puis comparez-le aux clés documentées de l’outil cible avant de remplacer votre configuration.

Objet JSON

{
  "title": "My App",
  "port": 8080,
  "debug": false,
  "owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
  "servers": [
    { "host": "a.example.com", "weight": 3 },
    { "host": "b.example.com", "weight": 1 }
  ],
  "ports": [80, 443]
}

TOML

title = "My App"
port = 8_080
debug = false
ports = [ 80, 443 ]

[owner]
name = "Ada"
since = "2024-01-05T10:00:00Z"

[[servers]]
host = "a.example.com"
weight = 3

[[servers]]
host = "b.example.com"
weight = 1

Détails et limites

Les entiers de 1000 ou plus reçoivent des séparateurs underscore (8080 devient 8_080). C’est du TOML valide, lu comme le même nombre.

Les chaînes de date restent des chaînes entre guillemets ; le JSON n’a pas de type date, donc aucune valeur datetime TOML n’est produite.

Les clés à valeur null sont omises sans avertissement, et 1.0 en JSON est écrit comme l’entier 1.

S’exécute dans votre navigateur avec @iarna/toml. Une liste mêlant des objets à d’autres valeurs est rejetée, car les tableaux de tables TOML ne peuvent pas les contenir. Les sous-tables sont indentées de deux espaces ; TOML l’ignore.

FAQ

Puis-je convertir un tableau JSON à la racine ?

Non. Un document TOML doit être une table : la page indique donc que le JSON est un tableau et suggère de l’envelopper dans un objet, par ex. {"items": [...]}.

Que deviennent les valeurs null ?

La clé est supprimée. {"a": null} produit une sortie vide. Utilisez une chaîne vide ou retirez la clé délibérément si la cible l’attend.

Pourquoi les nombres contiennent-ils des underscores ?

Le sérialiseur formate les grands entiers avec des séparateurs de chiffres _, autorisés par la spécification TOML. Tout parser TOML lit 8_080 comme 8080.

Spécifications et références