Outils

Convertisseur TOML vers JSON

Convertissez du TOML en JSON et du JSON en TOML — Cargo.toml, pyproject.toml et les autres — avec tables et dates intactes.

S’exécute dans le navigateurFormats de données308
Gratuit

Entrée

0 B

Résultat

Le résultat apparaîtra ici.

Le TOML est le format de Cargo.toml, pyproject.toml, netlify.toml et de nombreux sites Hugo, et tôt ou tard vous avez besoin de l’un de ces fichiers en JSON — pour l’interroger avec jq, le fournir à un script ou comparer structurellement deux versions. Cet outil convertit dans les deux sens avec smol-toml, un petit analyseur et sérialiseur pour TOML 1.1 qui passe la majeure partie de la suite officielle toml-test ; la spécification elle-même se trouve sur toml-lang/toml. Les erreurs de syntaxe indiquent la ligne et la colonne, et le convertisseur s’arrête, en nommant la clé exacte, plutôt que de perdre silencieusement quelque chose qu’un des formats ne sait pas exprimer.

Comment ça marche

  • Les tables en ligne, les clés à points et les tableaux de tables comme [[bin]] deviennent tous des objets et tableaux JSON imbriqués ordinaires.
  • Les dates-heures avec décalage deviennent des chaînes ISO 8601 ; les dates et heures locales gardent la forme sous laquelle elles ont été écrites, comme 1979-05-27.
  • Le null JSON n’a pas d’équivalent en TOML, le convertisseur nomme donc la clé au lieu de la supprimer, ce que smol-toml ferait sinon.
  • Vers le TOML, les objets imbriqués deviennent des sections [table] et les tableaux d’objets des tables [[array]].

Où vont vos données

Nulle part. Cet outil s’exécute entièrement dans votre navigateur : le texte collé est traité par la page, jamais transmis à un serveur ni consigné dans un journal.

Cet outil est gratuit et ne demande aucun compte. Ses résultats n’existent que dans la page ouverte et ne sont enregistrés nulle part.

Ce que ça coûte

Cet outil est gratuit, sans connexion ni points.

Questions fréquentes

Pourquoi une valeur null arrête-t-elle la conversion ?
Le TOML n’a pas de null. Un convertisseur qui ignore discrètement la clé produit un fichier qui a l’air correct mais se comporte différemment ; celui-ci refuse donc et vous dit où, sous la forme d’un chemin comme $.package.homepage. Supprimez la clé, ou donnez-lui une vraie valeur comme une chaîne vide ou false.
Pourquoi ma date-heure revient-elle sous forme de chaîne entre guillemets ?
Le JSON n’a pas de type date, donc une date-heure TOML devient une chaîne en passant au JSON. Reconvertir ce JSON produit une chaîne entre guillemets plutôt qu’une date TOML nue, car rien dans le JSON n’indique qu’il s’agissait d’une date. Retirez les guillemets si le programme qui la lit a besoin d’une vraie date-heure TOML.
Les commentaires et l’ordre des clés sont-ils conservés ?
Du TOML vers le JSON, l’ordre des clés est conservé. Du JSON vers le TOML, les clés simples de chaque table sont écrites avant ses sous-tables, car en TOML une clé qui suit un en-tête [table] appartient à cette table. Les commentaires ne sont pas conservés : ils sont éliminés lors de l’analyse du TOML, puisque le JSON n’a nulle part où les mettre, si bien qu’un aller-retour par le JSON rend les données sans les explications. Gardez le fichier TOML comme source de vérité et générez le JSON à partir de lui.
Que deviennent les très grands entiers ?
Les entiers TOML font 64 bits, et les nombres JavaScript ne sont exacts que jusqu’à 2^53. Plutôt que d’arrondir 9007199254740993 en un nombre différent, l’analyseur signale une erreur. Des valeurs de ce genre, comme les identifiants Snowflake, sont plus sûres stockées en chaînes. De même, inf et nan sont refusés, car le JSON ne peut pas les représenter.

L’open source derrière

Cet outil fonctionne grâce à squirrelchat/smol-toml, publié sous licence BSD-3-Clause. Si vous avez besoin du même comportement dans votre propre programme, c’est cette bibliothèque qu’il faut utiliser.

squirrelchat/smol-toml

Aussi appelé

  • toml vers json
  • json vers toml
  • convertisseur toml
  • parser toml en ligne
  • cargo.toml en json
  • pyproject.toml en json