TOML naar NDJSON omzetten

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.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Zonder verlies Er gaat niets weg. NDJSON bewaart precies wat TOML bewaarde.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Eén configbestand, één regel, en waarom dat de juiste eenheid is

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.

Een inventaris bouwen van elke Cargo.toml in een workspace

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.

Het veld dat de omzetting niet voor je kan toevoegen

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.

Wat één regel bevat

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.

Getypeerde waarden die een stream in gaan

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.

Het TOML-bestand dat de omzetting stopt

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.

Records die niet dezelfde sleutels delen

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.

Commentaar, en wat de dataset mist

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.

Wanneer één JSON-bestand het betere antwoord is

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.

Zo zet je TOML naar NDJSON om

  1. Sleep je TOML-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies NDJSON als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare NDJSON-bestand.

TOML of NDJSON: wat er verandert

TOML vergeleken met NDJSON
TOMLNDJSON
Volledige naamTom's Obvious Minimal LanguageNewline-Delimited JSON
Bestandsextensie.toml.ndjson, .jsonl
Mediatypeapplication/tomlapplication/x-ndjson
Voor het eerst gepubliceerd20132013
SpecificatieTOML 1.0
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenYAML, JSON, INIJSON, CSV

Wat verloren gaat

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.

Wat behouden blijft

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.

Het resultaat openen

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.

Waarvoor elk formaat bedoeld is

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.

Van TOML naar NDJSON: veelgestelde vragen

Wordt mijn TOML-bestand ergens heen geüpload?

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.

Is TOML naar NDJSON omzetten gratis?

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.

Gaat er kwaliteit verloren bij het omzetten van TOML naar NDJSON?

Nee. NDJSON bewaart dezelfde inhoud zonder iets weg te gooien: het resultaat is in kwaliteit identiek aan het origineel.

Is TOML naar NDJSON verliesvrij?

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.

Blijven opmerkingen behouden van TOML naar NDJSON?

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.

Meer over deze formaten