Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
Hier zet je TOML naar NDJSON om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.
Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.
Ze worden een voor een omgezet en samen in één ZIP gedownload.
TOML naar NDJSON
Een TOML-document is een tabel. Er bestaat geen TOML-bestand dat op het hoogste niveau een lijst is — de specificatie staat het niet toe — dus de recordgrens die newline-delimited JSON nodig heeft, verschijnt nooit binnen één bestand. Het hele document wordt één regel.
Voor de meeste bronnen zou dat een beperking zijn. Hier is het de vorm van het probleem: niemand wil een pyproject.toml in fragmenten gesplitst, en iedereen die er een naar NDJSON omzet, bouwt een verzameling waarin elk bestand een record is.
De werkwijze: zet elk bestand om, voeg de regel toe aan een groeiend uitvoerbestand. Omdat elke regel een complete, op zichzelf staande JSON-waarde is en niets het bestand omwikkelt, is samenvoegen de hele mergestap. Twee regels uit twee omzettingen vormen een geldig NDJSON-bestand met twee records.
Dat levert een dataset op waar je vragen aan kunt stellen. Welke crates een specifieke afhankelijkheidsversie vastpinnen, welke pakketten geen licentie declareren — allemaal één query over de verzameling in plaats van een script dat mappen doorloopt.
Een record zonder bron is bijna nutteloos in een inventaris. De omzetter leest de inhoud van een bestand en verder niets — hij kent het pad, de repository of de commit niet, dus de regel die hij produceert zegt niet waar hij vandaan kwam.
Voeg het zelf toe, op een van twee momenten. Een jq-stap tijdens het samenvoegen kan een pad-sleutel per regel injecteren, wat de TOML-bestanden onaangeroerd laat. Een sleutel binnen elk TOML-bestand overleeft elke toekomstige omzetting maar betekent bestanden bewerken die van anderen zijn.
Compacte JSON: geen inspringing, geen spaties na dubbele punten, sleutels in de volgorde van de TOML, eindigend met een regeleinde. Tabellen worden geneste objecten en arrays van tabellen worden arrays van objecten.
De regel is zo lang als de config is. Een pyproject.toml is een paar kilobyte, en een gegenereerde lock-achtige config kan veel groter zijn, en een lezer die regel voor regel verwerkt, moet de hele regel in het geheugen houden.
TOML heeft echte temporele typen en JSON niet, dus elke datum en datumtijd wordt een string. Offsets blijven behouden in plaats van naar UTC genormaliseerd, een lokale datum komt precies zo aan als geschreven.
Twee float-literalen zijn lossy op een manier die niets meldt: inf en nan zijn geldige TOML en worden null in JSON, dus een geconfigureerde oneindige limiet en een niet-geconfigureerde worden onderscheidbaar in de dataset. Het onderscheid geheel getal/float verdwijnt ook, want 1.0 serialiseert als 1.
TOML 1.0 vereist 64-bit ondertekende gehele getallen en JSON-getallen zijn IEEE-doubles, dus een waarde boven ongeveer negen biljard kan niet exact weergegeven worden. De parser stopt met een fout die de regel noemt in plaats van een afgerond getal in je dataset te schrijven.
Dat is correct gedrag, vooral voor een inventaris, waar een fout getal niet te onderscheiden zou zijn van een goed getal over tienduizend records. Zet de waarde tussen aanhalingstekens in het bronbestand — het was in elk echt geval waarin dit voorkomt een identificatiecode, geen hoeveelheid.
Configs uit verschillende projecten hebben niet dezelfde secties. De ene declareert een tool-tabel met drie linters erin, de volgende geen, een derde gebruikt een sleutel die niemand anders gebruikt. Elke regel draagt alleen de sleutels die zijn bestand had, een echt voordeel boven dezelfde verzameling platslaan naar een tabel.
De bestemming bepaalt hoeveel dat kost. Een schema-on-read-opslag verwerkt onregelmatige records nativement. Een lader met vast schema wijst de uitschieters af of laat velden vallen. Bekijk het breedste en smalste bestand in de verzameling voor je het doel definieert.
TOML-commentaar is de redenering in een config: waarom een afhankelijkheid vastgepind is, welk ticket bij een workaround hoort. NDJSON is JSON per regel en JSON kent geen commentaarsyntaxis, dus verdwijnt alles daarvan uit de dataset.
Dat is aanvaardbaar voor een inventaris en onaanvaardbaar als migratie. Niemand die opzoekt welke pakketten een versie vastpinnen heeft de omringende proza nodig; wie de TOML-bestanden zou vervangen door iets uit deze data gegenereerd, zou het wegwerpen.
Heb je maar één config te lezen, zet die dan om naar JSON in plaats van NDJSON. Ingesprongen JSON is leesbaar, jq verwerkt het identiek, en een bestand van één regel is voor elk ander doel slechter dan toevoegen. NDJSON verdient zijn plek zodra er veel bestanden zijn die ergens naartoe gaan.
De andere grens is herhaling. Moet de inventaris op een schema opnieuw opgebouwd worden, dan hoort het werk in een script dat de boom doorloopt, elk bestand met een echte TOML-bibliotheek ontleedt en de regels met het pad al eraan vast uitvoert. Deze omzetter is voor de eerste keer de dataset bouwen.
| TOML | NDJSON | |
|---|---|---|
| Volledige naam | Tom's Obvious Minimal Language | Newline-Delimited JSON |
| Bestandsextensie | .toml | .ndjson, .jsonl |
| Mediatype | application/toml | application/x-ndjson |
| Voor het eerst gepubliceerd | 2013 | 2013 |
| Specificatie | TOML 1.0 | — |
| Licentie | Open standaard | Open standaard |
| Stand van zaken | Actueel | Actueel |
| Opent in een browser | Geen browser | Geen browser |
| In plaats daarvan overwogen | YAML, JSON, INI | JSON, CSV |
Opmerkingen gaan niet mee. In TOML kun je een bestand van uitleg voorzien en NDJSON heeft daar geen syntaxis voor, dus elke toelichtende regel vervalt — en dat raakt juist de bestanden die van commentaar worden voorzien: configuratie die iemand anders moet bijhouden.
Er gaat niets verloren. TOML en NDJSON bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.
De gebruikelijke programma's overlappen niet: TOML open je in Visual Studio Code, NDJSON in jq en pandas — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.
De twee mikken op ander werk: TOML op bewerken, NDJSON op gegevens tussen programma’s verplaatsen en streamen. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.
TOML verscheen in 2013. Het is vastgelegd in TOML 1.0, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.
NDJSON stamt uit 2013. jq en pandas lezen het formaat.
Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt.
Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk.
Nee. NDJSON bewaart dezelfde inhoud zonder iets weg te gooien: het resultaat is in kwaliteit identiek aan het origineel.
Er gaat niets verloren. TOML en NDJSON bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.
Opmerkingen gaan niet mee. In TOML kun je een bestand van uitleg voorzien en NDJSON heeft daar geen syntaxis voor, dus elke toelichtende regel vervalt — en dat raakt juist de bestanden die van commentaar worden voorzien: configuratie die iemand anders moet bijhouden.