100 % local — vos données ne quittent jamais votre navigateur

TOML en JSON — les longs identifiants intacts

Convertissez du TOML en JSON. Les grands entiers gardent tous leurs chiffres et les dates leur décalage : la config arrive dans votre code telle qu’écrite.

Instantané Privé Zéro cookie
Indentation

Entrée TOML

Sortie JSON

Ce que fait cet outil

Un document TOML devient du JSON. Les tables s’imbriquent, et les [[tableaux de tables]] deviennent des tableaux.

title = "Demo"

[server]
host = "localhost"
port = 8080
{
  "title": "Demo",
  "server": {
    "host": "localhost",
    "port": 8080
  }
}

Les clés pointées s’imbriquent pareil : a.b.c = 1 vous rend {"a": {"b": {"c": 1}}}.

Les grands entiers, intacts

snowflake = 1096285471735640155
{
  "snowflake": 1096285471735640155
}

TOML demande des entiers signés de 64 bits, et un nombre JavaScript n’en tient exactement que 53. L’analyseur répondait au document entier « integer value cannot be represented losslessly » — un fichier TOML légal, refusé pour un identifiant. Les chiffres voyagent désormais comme des chiffres : le JSON est écrit par un sérialiseur sans perte, le même qui garde partout ailleurs sur ce site les grands nombres intacts. C’était un vrai défaut, trouvé en écrivant cette page puis corrigé.

inf et nan sont nommés, pas annulés

rate = inf
JSON has no infinity: "rate" is inf

TOML a inf, -inf et nan ; JSON n’a aucun des trois, et JSON.stringify les écrit null. Un débit infini devenait un débit absent, et rien dans le résultat ne le disait. L’outil s’arrête maintenant sur la valeur et nomme la clé qui la porte, comme il refuse déjà un null au retour vers TOML. Ce qu’il faut mettre à la place — une chaîne, un très grand nombre, aucune clé — est une décision sur vos données, pas une lecture.

Ce que JSON n’a pas

  • Un type date. 1979-05-27T00:32:00-07:00 devient la chaîne "1979-05-27T00:32:00.000-07:00". Le décalage est gardé ; les millisecondes sont écrites même quand la source n’en avait pas.
  • Deux sortes de nombres. TOML distingue l’entier du flottant, JSON n’a qu’un nombre : 1.0 arrive en 1. Reconvertissez et vous obtenez un entier là où vous aviez écrit un flottant.
  • Les commentaires. Ils documentent le fichier, pas les données, et il n’y a nulle part où les mettre.

Un fichier qui commence par une marque d’ordre des octets — l’invisible U+FEFF qu’ajoutent volontiers les éditeurs Windows — était refusé par un message sur les caractères permis dans une clé, pointant un caractère qu’on ne voit pas. Elle est maintenant retirée avant lecture.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Les entiers 64 bits passent-ils ?
Oui, depuis l’écriture de cette page. TOML impose des entiers signés de 64 bits, et l’analyseur refusait le document entier dès que l’un d’eux dépassait ce qu’un nombre JavaScript contient exactement : « integer value cannot be represented losslessly ». Un identifiant Discord ou un temps Unix en nanosecondes suffisait à faire rejeter un fichier parfaitement légal. Les chiffres traversent maintenant un à un, le JSON étant écrit par un sérialiseur sans perte plutôt que par celui de JavaScript.
Que deviennent `inf` et `nan` ?
La conversion s’arrête et nomme la clé. TOML a trois flottants spéciaux, JSON n’en a aucun, et `JSON.stringify` les écrit `null` — un débit infini devenait discrètement un débit absent. Nommer la clé laisse la décision là où elle doit être : une chaîne, un très grand nombre, une clé en moins, c’est à vous de choisir.
Et les dates ?
Elles deviennent des chaînes ISO 8601, décalage compris, JSON n’ayant pas de type date. Un détail mérite d’être su : les millisecondes sont écrites même quand vous ne les avez pas écrites, si bien que `07:32:00` arrive en `07:32:00.000`. L’instant est le même ; le texte ne l’est pas.

Convertisseurs associés