Zum Inhalt springen

JSON in TOML umwandeln — Numio

Wandelt ein JSON-Objekt in TOML um. Verschachtelte Objekte werden zu [table]-Abschnitten, Arrays von Objekten zu [[array of tables]], und Schlüssel mit null-Werten entfallen, da TOML kein null kennt.

Eine JSON-Konfiguration in die Syntax von pyproject.toml, Cargo.toml, wrangler.toml oder einer Hugo-Konfiguration umwandeln.

JSON

Wann sie hilft

  • Eine JSON-Konfiguration in die Syntax von pyproject.toml, Cargo.toml, wrangler.toml oder einer Hugo-Konfiguration umwandeln.
  • Von einem Skript als JSON erzeugte Einstellungen in eine TOML-basierte Konfigurationsdatei übernehmen.

Anwendung

  1. Füge ein JSON-Objekt (die Wurzel muss ein Objekt sein, kein Array) in den linken Editor ein oder öffne über die Schaltfläche zum Laden einer Datei eine UTF-8-Datei.
  2. Prüfe das TOML rechts: Zuerst kommen skalare Schlüssel, dann [table]- und [[array]]-Abschnitte.
  3. Kopiere das Ergebnis und vergleiche es mit den dokumentierten Schlüsseln des Zielwerkzeugs, bevor du deine Konfiguration ersetzt.

JSON-Objekt

{
  "title": "My App",
  "port": 8080,
  "debug": false,
  "owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
  "servers": [
    { "host": "a.example.com", "weight": 3 },
    { "host": "b.example.com", "weight": 1 }
  ],
  "ports": [80, 443]
}

TOML

title = "My App"
port = 8_080
debug = false
ports = [ 80, 443 ]

[owner]
name = "Ada"
since = "2024-01-05T10:00:00Z"

[[servers]]
host = "a.example.com"
weight = 3

[[servers]]
host = "b.example.com"
weight = 1

Details und Einschränkungen

Ganzzahlen ab 1000 erhalten Unterstriche als Trennzeichen (8080 wird zu 8_080). Das ist gültiges TOML und wird als dieselbe Zahl geparst.

Datums-Strings bleiben Strings in Anführungszeichen; JSON hat keinen Datumstyp, daher entstehen keine TOML-Datetime-Werte.

Schlüssel mit null-Werten werden stillschweigend weggelassen, und 1.0 aus JSON wird als Ganzzahl 1 geschrieben.

Läuft im Browser mit @iarna/toml. Eine Liste, die Objekte mit anderen Werten mischt, wird abgelehnt, da TOML-Arrays von Tabellen diese nicht aufnehmen können. Untertabellen werden um zwei Leerzeichen eingerückt; TOML ignoriert das.

FAQ

Kann ich ein JSON-Array auf oberster Ebene umwandeln?

Nein. Ein TOML-Dokument muss eine Tabelle sein, daher erklärt die Seite, dass das JSON ein Array ist, und schlägt vor, es in ein Objekt zu packen, z. B. {"items": [...]}.

Was passiert mit null-Werten?

Der Schlüssel entfällt. {"a": null} erzeugt eine leere Ausgabe. Verwende einen leeren String oder entferne den Schlüssel bewusst, wenn das Ziel ihn erwartet.

Warum enthalten Zahlen Unterstriche?

Der Serializer formatiert große Ganzzahlen mit _ als Zifferntrenner, was die TOML-Spezifikation erlaubt. Jeder TOML-Parser liest 8_080 als 8080.

Spezifikationen und Referenzen