TOML till JSON

Rusts Cargo.toml, Pythons pyproject.toml, Hugos config.toml: TOML finns överallt i den moderna konfigvärlden, men många verktyg talar fortfarande bara JSON. Klistra in din TOML här och få prydligt formaterad JSON tillbaka: [tabell]-sektioner blir nästlade objekt, [[arrayer av tabeller]] blir arrayer av objekt, och datum passerar oförändrade som strängar. Tolken täcker TOML:s vardagskärna; dess verkliga begränsningar (flerradiga värden, inline-tabeller, nycklar med punkter) listas öppet nedan.

Så fungerar konverteringen

  1. 1

    Klistra in din TOML

    Lägg texten i inmatningsrutan och tryck på Konvertera till JSON. Kommentarer med # som tar upp hela raden hoppas över automatiskt.

  2. 2

    Tabeller blir objekt

    En `[server.database]`-rubrik blir nästlade JSON-objekt, en nivå per punktavgränsat namn.

  3. 3

    Arrayer av tabeller blir arrayer

    `[[users]]`-block bygger en JSON-array med ett objekt per block.

  4. 4

    Skalära värden behåller sin typ

    Citerade strängar, enkla decimala heltal och flyttal samt true/false blir inbyggda JSON-typer; datum förblir strängar, exakt som de skrevs.

  5. 5

    Kopiera JSON

    Resultatet formateras med 4 mellanslags indrag, nycklarna behåller sin ursprungliga ordning och allt är redo att kopiera.

Så mappas typerna

TOML-värde JSON-värde Exempel
Sträng (basic eller literal) Sträng "hello" → "hello"
Heltal (enkelt decimalt) Tal 42 → 42
Flyttal (enkelt decimalt) Tal 3.14 → 3.14
Boolesk Boolesk true → true
Array (en rad) Array [1, 2, 3] → [1, 2, 3]
Tabell med nycklar Objekt [server] + port = 8080 → "server": {"port": 8080}
Array av tabeller Array av objekt [[users]] + name = "alice" → "users": [{"name": "alice"}]
Datum/tid Sträng, som skriven 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

Utdata formateras alltid med 4 mellanslags indrag, så arrayer och objekt sträcker sig över flera rader; tabellen ovan visar värdena på en rad för läsbarhetens skull. Nyckelordningen bevaras exakt som den står i din TOML.

Genomarbetat exempel

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

konverteras till:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

TOML som stöds, och de verkliga begränsningarna

Stöds: [tabell]-rubriker inklusive punktavgränsade sektionsnamn, [[arrayer av tabeller]], key = value-par på en rad, basic-strängar "..." med escapesekvenserna \n, \t och \", literal-strängar '...', enkla decimala heltal och flyttal, true/false, enradiga arrayer (nästling tillåten), helradskommentarer med #, samt datum som passerar som strängar.

Stöds inte, och vad du gör i stället:

  • Flerradiga strängar (""" eller ''') och flerradiga arrayer stoppar tolken med ett fel. Lägg värdet på en enda rad först.
  • Inline-tabeller expanderas inte: point = { x = 1, y = 2 } kommer ut som strängen "{ x = 1, y = 2 }", inte som ett objekt. Skriv om den som en egen [point]-sektion. Beroenderader i Cargo.toml, som serde = { version = "1.0" }, är klassikern.
  • Nycklar med punkter till vänster om likhetstecknet förblir en platt nyckel: server.host = "a" ger nyckeln "server.host", utan nästling. Använd en [server]-rubrik i stället. Punktavgränsade [sektions.namn] i rubriker nästlas däremot korrekt.
  • Kommentarer efter ett värde tas inte bort: port = 8080 # main blir strängen "8080 # main". Håll kommentarer på egna rader.
  • Talformat utöver enkla decimaler känns inte igen: 1_000, 0xFF, 5e2, +99, inf och nan kommer ut som citerade strängar. Skriv 1000, 255, 500, 99.
  • \uXXXX-escaper i basic-strängar avkodas inte. Klistra in det riktiga tecknet i stället.

För ett komplett TOML 1.0-dokument, använd en kommandoradskonverterare som toml2json, eller läs in filen med Pythons tomllib och skriv ut JSON därifrån.

Här är det användbart

  • Snabb inspektion av ett TOML-fragment som JSON under felsökning.
  • Skicka enkla konfigurationsvärden till lintrar, skript eller inventarieverktyg som bara accepterar JSON.
  • Generera JSON-testfixturer från TOML-anteckningar som är lättare att skriva för hand.
  • Migrera små, platta konfigurationsfiler, vilket många av Hugos config.toml är.

Anteckningar om tur och retur

  • Kommentarer överlever aldrig: JSON har ingen kommentarsyntax alls.
  • Datum förblir strängar; koden längre fram måste tolka dem tillbaka till datumobjekt.
  • Stora tal: heltal bevaras som 64-bitarsvärden i JSON-texten, men JavaScript-konsumenter tappar precision över 2^53. Se upp med tidsstämplar i nanosekunder och numeriska ID:n.
  • Nyckelordningen bevaras som skriven av den här omvandlaren; andra JSON-verktyg kan sortera om nycklar när de skriver ut dokumentet på nytt.

Omvänd riktning

JSON → TOML är den svårare resan, eftersom JSON har strukturer (djup anonym nästling, null) som TOML saknar eller hanterar annorlunda. De flesta tur-och-retur-scenarier kräver manuella justeringar på TOML-sidan.

Vanliga frågor

Nej. JSON har ingen kommentarsyntax, så helradskommentarer med # hoppas helt enkelt över. En varning: en kommentar efter ett värde tas inte bort, så port = 8080 # main blir strängen “8080 # main”. Håll kommentarer på egna rader innan du konverterar.

Nej. Den täcker vardagskärnan: tabeller med punktavgränsade sektionsnamn, arrayer av tabeller, key = value-par på en rad, citerade strängar, enkla decimaltal, booleska värden, enradiga arrayer och helradskommentarer. Flerradiga strängar och arrayer, inline-tabeller, nycklar med punkter och talformat som 1_000 eller 0xFF stöds inte. För dokument enligt hela specifikationen, använd ett CLI-verktyg som toml2json eller Pythons tomllib.

Vanliga konfigurationsfiler konverteras direkt. Konverteringen körs på vår server, så enorma dokument begränsas av förfrågans storlek; för TOML på flera megabyte passar en kommandoradskonverterare bättre.

Ja, den här omvandlaren körs på serversidan: din TOML skickas till vår server via HTTPS, konverteras där och kommer tillbaka i samma svar. Innehållet lagras inte efteråt; bara en anonym användningsräknare sparas. Undvik att klistra in hemligheter som lösenord eller API-nycklar.

Relaterade verktyg

Verktyget finns på andra språk