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:00devient 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.0arrive en1. 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.