Outils de développement · Convertisseurs de syntaxe
Pourquoi TOML a un type date-heure natif et JSON n'en a pas (RFC 3339)
· Contexte
toml json horodatages Validation
TOML est le seul format de ce groupe avec des dates et heures de première classe, toutes définies par RFC 3339. Cet article explique les quatre types date-heure TOML, pourquoi JSON n'en a délibérément aucun et ce qu'une conversion a à voir avec eux.
La date qui est devenue une chaîne — une configuration TOML avec une date de sortie, convertie en JSON et réduite en texte
Une date locale TOML telle que `1979-05-27` devient la chaîne JSON `"1979-05-27"`. Les caractères du calendrier survivent, mais pas le type natif TOML. La conversion de ce JSON écrit une chaîne entre guillemets, pas un jeton de date, et ToolAcre avertit lors de la première conversion.
Il s'agit d'une limite inévitable dans la valeur simple JSON choisie. Appeler l'aller-retour sans perte confondrait le texte préservé avec le type préservé. L'avertissement nomme à la fois le chemin et le type temporel afin que les réviseurs puissent décider si une chaîne est acceptable en aval.
Pourquoi JSON n'a pas de type de date : le minimalisme de Crockford, la convention de chaîne ISO 8601 et la convention des millisecondes depuis l'époque qui rivalisent pour combler le vide
JSON l'analyse ici produit des valeurs nulles, booléennes, des nombres, des chaînes, des tableaux et des objets ; il ne produit pas d'objets Date. Le référentiel prouve ce fait de mise en œuvre, mais ne fournit pas d’explications historiques sur le minimalisme de JSON ou les conventions industrielles concurrentes.
Les applications peuvent adopter des chaînes de type ISO ou des numéros d'époque par accord, mais ce sont des conventions superposées à JSON. Les convertisseurs de syntaxe n'en déduisent pas à partir d'un texte arbitraire et ne convertissent pas les valeurs temporelles TOML en arithmétique d'époque.
JSON n'a pas de type de date natif dans ce convertisseur ; la justification de l'origine est en dehors des preuves du référentiel
TOML expose quatre types : décalage date-heure avec un décalage Z ou numérique, date-heure locale sans zone, date locale et heure locale. smol-toml les représente sous forme d'objets de type date portant des métadonnées de type ; ToolAcre identifie chacun avant de le normaliser.
La distinction évite une erreur grave. Une heure locale n’est pas attribuée silencieusement UTC et une date-heure locale n’est pas déplacée entre les zones. Son décalage absent reste absent dans la chaîne JSON.
RFC 3339 comme base — le profil de l'ISO 8601 que TOML emprunte, y compris l'allocation de séparateur d'espace
Le normalisateur appelle le formateur ISO de la valeur de l'analyseur et supprime uniquement une fraction synthétique `.000`. Il préserve les fractions de seconde significatives et la forme locale/offset orientée source. Le code décrit cela comme le texte RFC 3339, mais l'article n'invente pas de clauses de spécification telles que les tolérances de séparateur au-delà de la sortie testée.
Un exemple de décalage reste un texte date-heure plutôt que d'être converti en valeur Z universelle par ce calque. Cela évite de changer la représentation écrite et conserve l'interprétation temporelle pour l'application qui en est propriétaire.
ToolAcre préserve le texte temporel orienté source sans affirmer tous les détails de conformité RFC 3339
Chaque valeur temporelle devient une chaîne et les avertissements indiquent que JSON, YAML et XML n'ont aucun type de date dans ce modèle de conversion. Les compensations ne sont pas délibérément abandonnées et les valeurs locales n’en acquièrent pas. Les informations perdues sont la catégorie de type TOML elle-même.
Lors de la conversion inverse, la chaîne est entre guillemets car l'écrivain n'a aucun marqueur lui indiquant de restaurer une date/heure. Réanalyser des chaînes arbitraires ressemblant à des dates en tant que dates saisirait de manière incorrecte des identifiants ou des étiquettes ordinaires et inventerait une convention non partagée par JSON.
Le convertisseur préserve l'orthographe locale par rapport à l'orthographe décalée, puis perd le type natif TOML
Utilisez `odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` et `lt = 07:32:00`. JSON contient quatre chaînes avec ces orthographes. L’avertissement répertorie les chemins date-heure décalés, date-heure locale, date locale et heure locale.
Convertissez le JSON en TOML. Chaque valeur est citée. Un `00.500Z` fractionnaire reste fractionnaire, tandis qu'une valeur d'une seconde entière ne gagne pas `.000`. Il s'agit du comportement réellement pris en charge et démontre clairement le texte préservé par rapport au type perdu.
Exemple concret : les quatre types temporels TOML deviennent des chaînes et renvoient des guillemets
La recherche de règles de fuseau horaire, les transitions vers l'heure d'été et la conversion d'époque ne font pas partie de cet itinéraire. Une date-heure locale sans zone ne peut pas devenir un instant unique sans plus d'informations. Le convertisseur d'horodatage Unix traite les instants connus sous un contrat différent.
Ne pas transmettre chaque chaîne résultante à JavaScript Date et assumer une signification équivalente. La date locale, l'heure locale et la date-heure sans zone nécessitent un contexte d'application. Préservez la sémantique des avertissements et des champs grâce à la migration.
À retenir : TOML sait ce qu'est une date, JSON sait seulement ce qu'est une chaîne - et comment le panneau des convertisseurs de syntaxe affiche cette différence dans votre navigateur.
TOML connaît quatre catégories temporelles ; JSON ne reçoit ici que des chaînes. ToolAcre préserve soigneusement l'orthographe et refuse d'inventer une zone, mais le type natif a disparu et ne peut pas être reconstruit automatiquement au retour.
Examinez chaque chemin averti et définissez une convention d'application lorsque la sémantique temporelle doit survivre. Si aucune convention de ce type n'existe, conservez TOML comme source faisant autorité plutôt que de traiter un aller-retour cité comme équivalent.
Une convention sonore nomme également quelles chaînes peuvent être à nouveau analysées et dans quel contexte. Une date-heure décalée peut identifier un instant, alors qu'une date-heure, une date ou une heure locale ne peut pas le faire sans règles supplémentaires. Stockez le type d'origine à côté de la chaîne normalisée lorsqu'une étape ultérieure doit reconstruire TOML ou planifier un travail. Sinon, acceptez que JSON transporte le texte d'affichage et évitez de le promouvoir silencieusement en horodatage universel.