100 % lokal — Ihre Daten verlassen nie Ihren Browser

TOML in JSON — lange IDs bleiben exakt

TOML in JSON umwandeln. Große Ganzzahlen behalten jede Ziffer und Daten ihren Zeitversatz — die Konfiguration kommt so an, wie sie geschrieben wurde.

Sofort Privat Null Cookies
Einrückung

TOML-Eingabe

JSON-Ausgabe

Was dieses Werkzeug tut

Aus einem TOML-Dokument wird JSON. Tabellen verschachteln sich, und [[Tabellenfelder]] werden zu Arrays.

title = "Demo"

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

Punktierte Schlüssel verschachteln genauso: a.b.c = 1 ergibt {"a": {"b": {"c": 1}}}.

Große Ganzzahlen, unversehrt

snowflake = 1096285471735640155
{
  "snowflake": 1096285471735640155
}

TOML verlangt vorzeichenbehaftete 64-Bit-Ganzzahlen, eine JavaScript-Zahl fasst exakt nur 53 Bit. Der Parser antwortete dem ganzen Dokument mit „integer value cannot be represented losslessly“ — eine legale TOML-Datei, abgelehnt wegen einer einzigen Kennung. Die Ziffern reisen nun als Ziffern: das JSON schreibt ein verlustfreier Schreiber, derselbe, der auf dieser Seite überall große Zahlen unversehrt lässt. Ein echter Fehler, beim Schreiben dieser Seite gefunden und behoben.

inf und nan werden benannt, nicht genullt

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

TOML hat inf, -inf und nan; JSON keinen der drei, und JSON.stringify schreibt sie als null. Aus einer unendlichen Rate wurde eine fehlende Rate, und nichts im Ergebnis sagte es. Das Werkzeug hält jetzt bei dem Wert an und nennt den Schlüssel, der ihn trägt — so wie es auf dem Rückweg nach TOML schon ein null ablehnt. Was stattdessen dort stehen soll — eine Zeichenkette, eine sehr große Zahl, gar kein Schlüssel —, ist eine Entscheidung über Ihre Daten, keine Lesart.

Was JSON nicht hat

  • Einen Datumstyp. 1979-05-27T00:32:00-07:00 wird zur Zeichenkette "1979-05-27T00:32:00.000-07:00". Der Offset bleibt; die Millisekunden werden ausgeschrieben, auch wenn die Quelle keine hatte.
  • Zwei Zahlenarten. TOML unterscheidet Ganzzahl und Fließkomma, JSON hat eine Zahl: 1.0 kommt als 1 an. Zurückgewandelt steht dort eine Ganzzahl, wo Sie ein Fließkomma geschrieben hatten.
  • Kommentare. Sie dokumentieren die Datei, nicht die Daten, und es gibt keinen Ort für sie.

Eine Datei, die mit einer Bytereihenfolge-Marke beginnt — dem unsichtbaren U+FEFF, das Windows-Editoren gern hinzufügen —, wurde mit einer Meldung über erlaubte Zeichen in Schlüsseln abgewiesen, die auf ein Zeichen zeigte, das man nicht sieht. Sie wird jetzt vor dem Lesen entfernt.

Datenschutz ab Werk

Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.

Häufige Fragen

Kommen 64-Bit-Ganzzahlen durch?
Ja, seit diese Seite geschrieben wurde. TOML verlangt vorzeichenbehaftete 64-Bit-Ganzzahlen, und der Parser wies das ganze Dokument ab, sobald eine über das hinausging, was eine JavaScript-Zahl exakt fasst: „integer value cannot be represented losslessly“. Eine Discord-ID oder ein Zeitstempel in Nanosekunden genügte, um eine völlig legale Datei abzulehnen. Die Ziffern kommen jetzt eine für eine durch, weil das JSON von einem verlustfreien Schreiber stammt und nicht von dem von JavaScript.
Was wird aus `inf` und `nan`?
Die Umwandlung hält an und nennt den Schlüssel. TOML hat drei besondere Fließkommawerte, JSON keinen davon, und `JSON.stringify` schreibt sie als `null` — aus einer unendlichen Rate wurde still eine fehlende Rate. Den Schlüssel zu nennen lässt die Entscheidung dort, wo sie hingehört: eine Zeichenkette, eine sehr große Zahl, gar kein Schlüssel — das wählen Sie.
Und Datumsangaben?
Sie werden zu ISO-8601-Zeichenketten, Offset inklusive, denn JSON kennt keinen Datumstyp. Ein Detail lohnt sich zu wissen: die Millisekunden werden ausgeschrieben, auch wenn Sie keine geschrieben haben, `07:32:00` kommt also als `07:32:00.000` an. Der Zeitpunkt ist derselbe; der Text nicht.

Ähnliche Konverter