JSON a TOML
Aquest convertidor gratuït transforma objectes JSON en fitxers de configuració TOML v1.0 de manera ràpida. Genera automàticament taules niades ([section]), subtaules ([a.b]) i matrius de taules ([[items]]), de manera que és especialment útil per crear esborranys de Cargo.toml o pyproject.toml. Tot el procés es fa localment dins del navegador.
Relacionats
Què és TOML? Per què convertir JSON a TOML?
TOML significa Tom's Obvious, Minimal Language (el llenguatge obvi i minimalista de Tom), un format de fitxer de configuració publicat el 2013 per Tom Preston-Werner, cofundador de GitHub. Els seus objectius de disseny són: sintaxi òbvia (obvious), minimalista (minimal), fàcil de llegir per a humans i clara sense ambigüitats. TOML 1.0 es va convertir en versió estable el 2021 (toml-lang/toml) i avui dia és el format de configuració per defecte de nombroses eines com Cargo de l'ecosistema Rust, pyproject.toml de Python (PEP 621), Hugo, Prettier, Deno i Taplo.
En l'escenari de fitxers de configuració, TOML ofereix diversos avantatges clars respecte a JSON i YAML: ① sense les trampes d'indentació de YAML — YAML utilitza la indentació per expressar la jerarquia i un error d'indentació pot canviar completament el significat de la configuració (per exemple, una llista es converteix en una cadena), mentre que TOML utilitza [table] per declarar explícitament la jerarquia, sense ambigüitats; ② més adequat que JSON per a configuracions — les cometes i claus de JSON resulten molt carregoses en configuracions complexes, mentre que l'escriptura key = value de TOML és més neta i admet comentaris de manera nativa; ③ sistema de tipus clar — TOML distingeix set tipus: integer, float, string, boolean, datetime, array i table, sense l'ambigüitat de JSON sobre si un número és enter o flotant, ni el problema de Noruega de YAML 1.1 (NO interpretat com a booleà false).
L'estructura central de TOML consta de quatre elements: ① parells clau-valor (key = value) per a opcions de configuració bàsiques; ② taules (Table) declarades amb [name] per agrupar amb nom, amb suport per a imbricació ([a.b.c]); ③ matrius de taules (Array of Tables) declarades amb [[name]] per a llistes d'objectes homogenis, habituals en configuracions multi-entorn, llistes de connectors o llistes de dependències; ④ matrius (Array) amb suport tant per a tipus bàsics en línia ([1, 2, 3]) com per a escriptura multilínia. Durant la conversió, aquesta eina reconeix intel·ligentment l'estructura JSON i selecciona la sintaxi TOML més adequada.
Les motivacions habituals per convertir JSON a TOML són diverses: ① el projecte migra de l'ecosistema Node.js a Rust o Python i cal unificar el format de configuració a TOML; ② l'equip decideix unificar les configuracions JSON disperses en TOML, aprofitant els nivells [section] de TOML per evitar la càrrega de lectura de les imbricacions profundes de JSON; ③ substituir YAML per TOML per eliminar errors estranys causats per la indentació; ④ convertir metadades JSON rebudes en pipelines CI/CD a TOML per injectar-les a les eines posteriors. Aquesta eina cobreix tots aquests escenaris de conversió.
El procés de conversió és essencialment un mapeig d'arbre sintàctic: JSON.parse() analitza el text en un objecte JavaScript (AST) i després es recorre recursivament cada node — cadenes, números, booleans i null es mapegen als escalars TOML corresponents; les matrius es divideixen en matrius en línia o matrius de taules segons el tipus d'elements; els objectes niats es mapegen a taules o subtaules. Finalment, el text es genera segons l'especificació TOML. Aquest mapeig estructurat garanteix que el resultat sigui 100% sintàcticament vàlid, sense errors de format.
Casos d'ús
- Quan vols preparar ràpidament un esborrany de Cargo.toml per a un projecte Rust
- Quan necessites traslladar la configuració d'un projecte Python a pyproject.toml
- Quan canvies configuracions de Hugo, Deno o Prettier de JSON a TOML
- Quan l'equip vol unificar configuracions de CI/CD o DevOps al voltant de TOML
- Quan vols comparar el JSON existent amb TOML per triar el format més llegible
- Quan estàs aprenent la sintaxi de TOML amb exemples reals de taules niades i matrius de taules
Com usar-ho
- Enganxa el JSON a l'editor de l'esquerra o carrega un fitxer .json / .txt. Si vols, també pots obrir un exemple
- L'eina analitza les dades i genera la sortida TOML v1.0 en temps real al panell dret
- Si apareix un error de sintaxi, revisa l'avís i corregeix primer el JSON
- Copia el resultat o desa'l com a config.toml per utilitzar-lo al projecte
Característiques
- Genera una sortida compatible amb TOML v1.0 que pots utilitzar directament amb Cargo, Poetry, Hugo, Prettier i altres eines compatibles
- Converteix automàticament objectes JSON de diversos nivells en taules TOML com [a] i [a.b.c], mantenint una estructura clara
- Transforma matrius d'objectes en matrius de taules [[items]], ideals per a llistes de dependències, hosts o entorns
- Escapa cometes dobles, barres invertides, salts de línia i tabuladors segons les regles de TOML
- Assigna cadenes, nombres, booleans i null als tipus TOML adequats; null es converteix en cadena buida ""
- Mostra el resultat en temps real: enganxes el JSON a l'esquerra i veus el TOML immediatament a la dreta
- Permet carregar un exemple complet amb objectes niats, matrius i matrius de taules per provar la conversió ràpidament
- Admet fitxers .json / .txt i la descàrrega del resultat com a config.toml
- A l'escriptori pots ajustar l'amplada dels panells arrossegant-los i es desen automàticament les darreres 200 entrades
- Després de convertir, pots continuar amb l'eina de format JSON per netejar o validar les dades originals
- Tot el processament es fa localment amb JavaScript al navegador, de manera que la configuració sensible no surt del dispositiu
Preguntes freqients
Com es converteix un JSON en un fitxer de configuració TOML?
Enganxa el contingut JSON al quadre d'entrada de l'esquerra; l'eina analitzarà automàticament l'objecte JSON i el convertirà al format de fitxer de configuració segons l'especificació TOML v1.0. Els parells clau-valor es converteixen en key = value, els objectes niats es converteixen en taules TOML ([section]) i subtaules ([a.b]), i les matrius es divideixen automàticament en matrius en línia o matrius de taules ([[items]]) segons el seu contingut. Pots fer clic al botó d'exemple per carregar un exemple niat i veure'n el resultat, i descarregar directament el resultat com a fitxer config.toml per utilitzar-lo en el teu projecte.
Quins escenaris són adequats per a TOML, YAML i JSON respectivament?
JSON és adequat per a l'intercanvi de dades d'API i la transmissió de dades entre frontend i backend, essent l'estàndard de facto per a les interfícies REST; YAML és adequat per a estructures de dades complexes i configuracions de CI/CD (GitHub Actions, Ansible, Kubernetes), amb alta llegibilitat i suport per a comentaris i múltiples documents; TOML és adequat per a escenaris clars de fitxers de configuració (Rust/Cargo, pyproject de Python, Hugo, Prettier), amb una sintaxi senzilla, sense ambigüitats ni trampes d'indentació. No hi ha un avantatge absolut entre ells; la clau és adaptar-se a l'escenari: per a fitxers de configuració es recomana TOML, per a CI/CD YAML, i per a dades d'API JSON.
Com es representen els objectes JSON niats en TOML?
TOML utilitza taules (Table) per representar estructures niades. Un nivell d'imbricació com {"database": {"host": "localhost"}} es converteix en [database] host = "localhost"; diversos nivells com {"server": {"ssl": {"enabled": true}}} es converteixen en [server.ssl] enabled = true. Aquesta eina reconeix automàticament els nivells d'imbricació i genera el camí de capçalera de taula corresponent sense necessitat d'ajustaments manuals.
Com es converteixen les matrius JSON en TOML?
TOML distingeix dues sintaxis de matrius: ① les matrius de tipus bàsics (com ["a", "b", 1, 2]) es converteixen en matrius en línia key = ["a", "b", 1, 2], entre claudàtors i separades per comes; ② les matrius d'objectes (com [{"name": "primary"}, {"name": "replica"}]) es converteixen en matrius de taules [[items]], amb cada objecte precedit per la capçalera [[items]] i els seus camps disposats a continuació. L'eina determina automàticament el tipus de matriu i tria la sintaxi TOML més adequada.
El TOML generat es pot utilitzar directament com a Cargo.toml?
Sí. L'eina segueix estrictament l'especificació oficial TOML v1.0 (github.com/toml-lang/toml), i el TOML generat es pot utilitzar directament amb Cargo (gestor de paquets de Rust), Poetry/pyproject (gestor de paquets de Python), Hugo (generador de llocs estàtics), Prettier, Deno, Taplo o qualsevol altra eina compatible amb TOML. Tingues en compte que si necessites les seccions específiques [package] / [dependencies] de Cargo.toml, afegeix els camps corresponents segons l'especificació de Cargo (name, version, edition, taules de dependències de crates, etc.).
En què es converteixen els valors null del JSON?
TOML no té un tipus null, per la qual cosa els valors null del JSON es converteixen en una cadena buida "" (l'equivalent més habitual). Si el consumidor del teu TOML té requisits específics per als camps null (com el camp optional d'un crate a [dependencies]), ajusta manualment la línia corresponent després de la conversió.
Com es gestionen les cometes dobles i els salts de línia dins de les cadenes?
Les cadenes TOML han d'anar entre cometes dobles, i les cometes dobles, barres invertides, salts de línia (\n), retorns de carro (\r) i tabuladors (\t) interns s'han d'escapar segons les regles de TOML. Aquesta eina gestiona automàticament aquests escapaments: per exemple, He said "Hello" en JSON es converteix en He said \"Hello\" en TOML, i els salts de línia dins de cadenes multilínia es converteixen en \n. No cal escapament manual; la sortida de l'eina es pot llegir correctament per qualsevol analitzador TOML.
El TOML generat admet el tipus data i hora?
Aquesta eina només accepta text JSON com a entrada, i l'estàndard JSON no té un tipus data i hora natiu (la pràctica habitual és utilitzar cadenes ISO 8601, com "2026-01-01T00:00:00Z"). El TOML resultant conservarà aquests valors com a cadenes (key = "2026-01-01T00:00:00Z"). Si necessites els tipus nadius de TOML local datetime o offset datetime, canvia manualment la cadena a un literal de data TOML nu (per exemple, 2026-01-01T00:00:00).
En convertir al navegador, les dades de configuració es pujen a algun servidor?
No. Tots els processos d'anàlisi de JSON, generació de TOML i escapament de cadenes s'executen localment al motor JavaScript del teu navegador, sense enviar-se a cap servidor a través de la xarxa, i funcionen fins i tot sense connexió. Pots convertir amb tranquil·litat JSON que contingui informació sensible com contrasenyes de bases de dades, claus d'API o adreces internes.
Solució de problemes
Com es resol l'error «Unexpected token» del JSON?
Es tracta d'un error de sintaxi JSON. Causes habituals: ① coma final addicional (trailing comma), com {"a":1,}; ② cometes simples embolcallant la cadena, com {'a':1} (JSON requereix cometes dobles); ③ noms de claus sense cometes, com {a:1}; ④ comentaris // o /* */ (l'estàndard JSON no els admet). Pots utilitzar l'eina de reparació JSON d'aquest lloc per corregir automàticament aquests errors habituals amb un sol clic i després tornar a enganxar el JSON aquí per convertir-lo.
El TOML convertit dóna error «invalid TOML» a Cargo?
Normalment es deu a conflictes de noms de camps o camps obligatoris que falten. L'analitzador TOML és molt estricte amb els camins de capçalera de taula, noms de claus duplicats i escapament de caràcters. Comprova: ① si hi ha noms de claus duplicats dins del mateix àmbit; ② si els caràcters especials dins de les cadenes s'escapen correctament (cometes dobles, barres invertides, salts de línia); ③ si la imbricació és massa profunda (TOML 1.0 recomana no superar els 5 nivells); ④ si falta alguna secció obligatòria de Cargo com [package]. La sortida d'aquesta eina és 100% sintàcticament vàlida; el problema sol estar al consumidor (com si els noms dels camps compleixen l'especificació de Cargo).
Per què la matriu d'objectes s'ha convertit en una matriu en línia en lloc d'una matriu de taules?
Una matriu JSON només es converteix en una matriu en línia ["a","b"] quan tots els seus elements són de tipus bàsic (cadena, número, booleà o null); les matrius d'objectes (com [{"name":"x"}]) es converteixen en matrius de taules [[items]]. Si la teva matriu d'objectes s'ha identificat erròniament com a matriu en línia, significa que s'han barrejat elements que no són objectes. Comprova les dades: ① si dins la matriu hi ha cadenes o números barrejats; ② si els nivells d'imbricació s'han trencat.
Alguns noms de clau apareixen amb cometes després de la conversió, com es poden eliminar?
TOML especifica que els noms de claus només poden contenir lletres, números, guions baixos i guions ([A-Za-z0-9_-]). Si els noms de claus JSON contenen caràcters especials (com espais, punts, caràcters xinesos, emoji o paraules reservades), l'eina els embolcallarà automàticament amb cometes dobles per garantir la validesa del TOML; per exemple, {"my key": 1} es converteix en "my key" = 1. Si la teva eina downstream no accepta noms de claus amb cometes, canvia manualment els noms de claus JSON a caràcters vàlids (A-Z a-z 0-9 _ -) abans de convertir.
Què fer si el navegador va lent amb fitxers grans?
L'eina està optimitzada per a la conversió en temps real (converteix mentre escrius), però els fitxers molt grans (>1 MB, centenars de milers de línies) encara poden suposar un repte. Recomanacions: ① comprova primer si el JSON és vàlid amb l'eina de format JSON; ② converteix per lots (per exemple, divideix per claus de nivell superior); ③ assegura't que el navegador disposa de memòria suficient; ④ per a fitxers de configuració extremadament grans (10 MB+), es recomana utilitzar eines de línia d'ordres com taplo o tomlq. Aquesta eina està orientada a escenaris de configuració quotidians (de KB a diversos centenars de KB).
Glossari
- TOML
- Tom's Obvious, Minimal Language, un llenguatge de format dissenyat per a fitxers de configuració, amb sintaxi senzilla i sense ambigüitats. És el format de configuració per defecte de Cargo de Rust, pyproject de Python i Hugo.
- Table (Taula)
- Agrupació amb nom declarada amb [name] en TOML, equivalent a un objecte en JSON, admet imbricació amb punts com [server.ssl].
- Array of Tables (Matriu de taules)
- Llista d'objectes homogenis declarada amb [[name]] en TOML, on cada secció [[name]] conté tots els camps d'un objecte, equivalent a una matriu d'objectes en JSON.
- Inline Table (Taula en línia)
- Sintaxi admesa per TOML 1.0 que permet declarar objectes simples en una sola línia amb { key = value, key = value }, adequada per a objectes plans sense necessitat de noms.
- Cargo.toml
- Fitxer de configuració estàndard per a projectes Rust, en format TOML, que defineix les metadades del paquet, dependencies, dev-dependencies, features, etc.
- pyproject.toml
- Fitxer de configuració estàndard per a projectes Python (PEP 621), que defineix build-system, metadades del projecte, dependencies i configuracions d'eines (black, pytest, mypy, etc.).
- TOML v1.0
- Versió estable de TOML publicada oficialment el 2021. Aquesta eina segueix estrictament aquesta especificació (github.com/toml-lang/toml/blob/main/toml.md).
- Objectes niats JSON
- Objectes que contenen altres objectes en JSON, que es corresponen amb taules ([section]) o subtaules ([a.b.c]) en TOML.
- Escapament TOML
- Els caràcters especials com cometes dobles, barres invertides i salts de línia dins de cadenes TOML s'han d'escapar amb barra invertida (\", \\, \n). Aquesta eina ho gestiona automàticament.
- Fitxer de configuració (Config File)
- Aplicació que llegeix el fitxer de configuració a l'inici, separat del codi per facilitar-ne la modificació. TOML és un dels estàndards de facto per a fitxers de configuració.
Taula de mapeig de tipus JSON a TOML
Aquesta eina converteix els tipus JSON en tipus TOML seguint aquestes regles:
| Tipus JSON | Tipus TOML | Sintaxi TOML | Descripció |
|---|---|---|---|
| string | string | key = "value" | Les cadenes TOML han d'anar entre cometes dobles |
| integer | integer | key = 8080 | Els enters no tenen punt decimal |
| float | float | key = 3.14 | Els flotants han de tenir punt decimal |
| boolean | boolean | key = true | TOML només admet true / false en minúscules |
| null | string (buida) | key = "" | TOML no té tipus null, es converteix en cadena buida |
| array[primitive] | array | key = ["a", "b"] | Les matrius de tipus bàsics utilitzen claudàtors en línia |
| array[object] | array of tables | [[items]]
key = value | Les matrius d'objectes utilitzen [[name]] |
| object | table | [name]
key = value | Els objectes utilitzen la declaració de taula [name] |
Taula de comparació d'escapament de cadenes TOML
Caràcters especials que s'han d'escapar dins de cadenes TOML:
| Caràcter original | Escapat en TOML | Nom | Escenari d'exemple |
|---|---|---|---|
" | \" | Cometa doble | Cometa doble niada dins d'una cadena |
\ | \\ | Barra invertida | Camí de Windows C:\Users |
salt de línia | \n | Newline | Compressió de cadenes multilínia |
tabulador | \t | Tab | Camps amb tabulador |
retorn de carro | \r | Carriage Return | Salt de línia CRLF de Windows |
\b | \b | Backspace | Caràcter de retrocés |
\f | \f | Form Feed | Salt de pàgina |
U+0000 | \u0000 | Unicode 0 | Els caràcters de control s'han d'escapar amb \u |
Comparació d'exemples de JSON a TOML
Sortida TOML corresponent a entrades JSON amb estructures complexes:
| Estructura | Exemple |
|---|---|
| Entrada JSON | { "name": "app", "port": 8080 } |
| Sortida TOML | name = "app"
port = 8080 |
| Entrada JSON | { "server": { "host": "0.0.0.0", "port": 443 } } |
| Sortida TOML | [server]
host = "0.0.0.0"
port = 443 |
| Entrada JSON | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| Sortida TOML | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
L'anàlisi de JSON, la generació de TOML, l'escapament de cadenes i la lectura de fitxers es fan localment amb JavaScript al teu navegador. El JSON d'entrada i el TOML generat no s'envien a cap servidor ni es conserven per a anàlisi. Per això pots fer servir l'eina també amb configuracions sensibles com contrasenyes de bases de dades, claus d'API o adreces internes. L'historial local només s'emmagatzema al localStorage del navegador i desapareix en buidar la memòria cau.
Authoritative References
- toml-langEspecificació oficial TOML v1.0
- GitHubRepositori TOML a GitHub
- ViquipèdiaTOML - Viquipèdia
- Oficial de RustReferència de camps de Cargo.toml
- Comprimir JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- Aplanar JSON
- JSON Formatter
- Generador de JSON
- Consulta JSONPath
- Combinar JSON
- Reparació JSON
- Validador d'Esquema JSON
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON a Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- Converteix JSON a XML
- YAML a JSON
- JSON → YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP