Deutsch

Entwicklertools · Syntaxkonverter

Warum TOML einen nativen Datums-/Uhrzeittyp hat und JSON nicht (RFC 3339)

· Hintergrund

toml json Zeitstempel

Vier TOML-Zeitwerte, die ohne Zoneninvention auf JSON-Zeichenfolgen in Anführungszeichen eingegrenzt werden
Original-ToolAcre-Vektorillustration

TOML ist das einzige Format in dieser Gruppe mit erstklassigen Datums- und Uhrzeitangaben, die alle durch RFC 3339 definiert sind. In diesem Beitrag werden die vier Datums-/Uhrzeitarten von TOML erläutert, warum JSON absichtlich keine hat und was eine Konvertierung damit zu tun hat.

Das Datum, das zu einer Zeichenfolge wurde – eine TOML-Konfiguration mit einem Veröffentlichungsdatum, konvertiert in JSON und auf Text reduziert

Ein TOML lokales Datum wie `1979-05-27` wird zur Zeichenfolge JSON `"1979-05-27"`. Die Kalenderzeichen bleiben erhalten, der native Typ TOML jedoch nicht. Durch die Rückkonvertierung von JSON wird eine Zeichenfolge in Anführungszeichen geschrieben, kein Datumstoken, und ToolAcre warnt bei der ersten Konvertierung.

Dies ist eine unvermeidbare Grenze im gewählten einfachen JSON-Wert. Den Roundtrip als verlustfrei zu bezeichnen, würde den erhaltenen Text mit dem beibehaltenen Typ verwechseln. Die Warnung nennt sowohl den Pfad als auch die zeitliche Art, sodass Prüfer entscheiden können, ob eine Zeichenfolge im Nachhinein akzeptabel ist.

Warum JSON keinen Datumstyp hat – Crockfords Minimalismus, die ISO-String-Konvention 8601 und die Millisekunden-seit-Epoche-Konvention, die darum konkurrieren, die Lücke zu schließen

JSON Das Parsen hier erzeugt Null, Boolesche Werte, Zahlen, Zeichenfolgen, Arrays und Objekte. Es werden keine Date-Objekte erzeugt. Das Repository beweist diese Tatsache der Implementierung, liefert jedoch keine historischen Erklärungen für den Minimalismus von JSON oder konkurrierende Branchenkonventionen.

Anwendungen können nach Vereinbarung ISO-ähnliche Zeichenfolgen oder Epochennummern übernehmen, aber das sind Konventionen, die auf JSON geschichtet sind. Syntaxkonverter leiten keinen aus beliebigem Text ab und konvertieren TOML-Zeitwerte nicht in Epochenarithmetik.

JSON hat in diesem Konverter keinen nativen Datumstyp; Die Ursprungsbegründung liegt außerhalb des Aufbewahrungsorts

TOML macht vier Arten verfügbar: versetztes Datum/Uhrzeit mit einem Z- oder numerischen Offset, lokales Datum/Uhrzeit ohne Zone, lokales Datum und lokale Zeit. smol-toml stellt sie als datumsähnliche Objekte dar, die Artmetadaten tragen; ToolAcre identifiziert jedes, bevor es normalisiert wird.

Die Unterscheidung verhindert einen schwerwiegenden Fehler. Eine Ortszeit wird nicht stillschweigend UTC zugewiesen und ein lokales Datum/Uhrzeit wird nicht zwischen Zonen verschoben. Sein fehlender Offset fehlt in der Zeichenfolge JSON.

RFC 3339 als Grundlage – das Profil von ISO 8601, das TOML entlehnt, einschließlich der zulässigen Leerzeichen

Der Normalisierer ruft den ISO-Formatierer des Parserwerts auf und entfernt nur einen synthetischen `.000`-Bruch. Es bewahrt aussagekräftige Sekundenbruchteile und die quellenorientierte lokale versus versetzte Form. Der Code beschreibt dies als RFC-3339-Text, der Artikel erfindet jedoch keine Spezifikationsklauseln wie Trennzeichenzugaben über die getestete Ausgabe hinaus.

Ein Offset-Beispiel bleibt Datum-Uhrzeit-Text und wird von dieser Ebene nicht in einen universellen Z-Wert konvertiert. Dadurch wird eine Änderung der schriftlichen Darstellung vermieden und die zeitliche Interpretation bleibt für die Anwendung erhalten, die sie besitzt.

ToolAcre behält quellenorientierten zeitlichen Text bei, ohne die vollständigen RFC-3339-Konformitätsdetails geltend zu machen

Jeder Zeitwert wird zu einer Zeichenfolge und Warnungen besagen, dass JSON, YAML und XML in diesem Konvertierungsmodell keinen Datumstyp haben. Offsets werden nicht absichtlich gelöscht, und lokale Werte erhalten keinen Offset. Bei den verlorenen Informationen handelt es sich um die Typkategorie TOML selbst.

Bei der umgekehrten Konvertierung wird die Zeichenfolge in Anführungszeichen gesetzt, da der Writer keine Markierung hat, die ihn anweist, ein Datum/Uhrzeit wiederherzustellen. Das erneute Analysieren beliebiger datumsähnlicher Zeichenfolgen als Datumsangaben würde gewöhnliche Bezeichner oder Beschriftungen falsch eingeben und eine Konvention erfinden, die von JSON nicht geteilt wird.

Der Konverter behält die lokale Schreibweise gegenüber der versetzten Schreibweise bei und verliert dann den nativen Typ TOML

Verwenden Sie `odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` und `lt = 07:32:00`. JSON enthält vier Zeichenfolgen mit diesen Schreibweisen. Die Warnung listet versetzte Datum-Uhrzeit-, lokale Datum-Uhrzeit-, lokale Datums- und lokale Zeitpfade auf.

Konvertieren Sie JSON zurück in TOML. Jeder Wert ist angegeben. Ein Bruchteil `00.500Z` bleibt Bruchteil, während ein ganzer Sekundenwert nicht `.000` erhält. Dies ist das tatsächlich unterstützte Verhalten und zeigt deutlich den erhaltenen Text im Vergleich zum verlorenen Typ.

Arbeitsbeispiel: Alle vier zeitlichen Arten TOML werden zu Zeichenfolgen und geben Anführungszeichen zurück

Die Suche nach Zeitzonenregeln, Sommerzeitumstellungen und Epochenkonvertierung sind nicht Teil dieser Route. Ein lokales Datum und eine Uhrzeit ohne Zone können ohne weitere Informationen nicht zu einem eindeutigen Zeitpunkt werden. Der Unix-Zeitstempelkonverter adressiert bekannte Zeitpunkte unter einem anderen Vertrag.

Geben Sie nicht jede resultierende Zeichenfolge an JavaScript Date weiter und nehmen Sie eine entsprechende Bedeutung an. Lokales Datum, lokale Zeit und zonenloses Datum/Uhrzeit erfordern Anwendungskontext. Behalten Sie die Warn- und Feldsemantik durch Migration bei.

Fazit: TOML weiß, was ein Datum ist, JSON weiß nur, was eine Zeichenfolge ist – und wie das Syntaxkonverter-Bedienfeld diesen Unterschied in Ihrem Browser anzeigt

TOML kennt vier zeitliche Kategorien; JSON empfängt hier nur Strings. ToolAcre behält die Rechtschreibung sorgfältig bei und weigert sich, eine Zone zu erfinden, aber der native Typ ist verschwunden und kann bei der Rückkehr nicht automatisch wiederhergestellt werden.

Überprüfen Sie jeden gewarnten Pfad und definieren Sie eine Anwendungskonvention, wann die zeitliche Semantik bestehen bleiben muss. Wenn keine solche Konvention existiert, behalten Sie TOML als maßgebliche Quelle bei, anstatt einen zitierten Roundtrip als gleichwertig zu behandeln.

Eine Soundkonvention benennt auch, welche Zeichenfolgen erneut analysiert werden dürfen und in welchem ​​Kontext. Ein versetztes Datum/Uhrzeit kann einen Zeitpunkt identifizieren, während ein lokales Datum/Uhrzeit, Datum oder Uhrzeit dies nicht ohne zusätzliche Regeln tun kann. Speichern Sie den ursprünglichen Typ neben der normalisierten Zeichenfolge, wenn in einer späteren Phase TOML rekonstruiert oder Arbeiten geplant werden müssen. Andernfalls akzeptieren Sie, dass JSON Anzeigetext trägt, und vermeiden Sie es, ihn stillschweigend in einen universellen Zeitstempel hochzustufen.