NDJSON naar INI omzetten

Hier zet je NDJSON naar INI 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.
  • Opnieuw opgebouwd INI werkt anders dan NDJSON. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat INI kan uitdrukken wordt getrouw weergegeven, en wat daar geen equivalent heeft blijft helemaal weg.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.
  • Goed om te weten INI kent geen nesting. Alles onder één niveau wordt platgeslagen tot sleutels met punten ertussen.

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

INI kent geen lijst, en NDJSON is niets anders dan een lijst

De mismatch is compleet, en dat verdient het eerst genoemd te worden. Een INI-bestand is een verzameling genoemde secties met platte sleutel-waardeparen — de beschrijving van één ding, meestal één toepassingsconfiguratie. Een NDJSON-bestand is een reeks records zonder naam, zonder betekenisvolle volgorde en zonder vaste lengte.

Er is geen weergave die beide recht doet. De omzetting gebruikt de enige naam die een record in een lijst heeft: zijn positie. De eerste regel wordt [0], de tweede [1], enzovoort. Dat is getrouw, er gaat niets verloren, en het levert een bestand op waarvan de sectienamen niets betekenen.

De genummerde secties zijn een plaatshouder, geen antwoord

Zijn de records werkelijk losse configuraties — één per host, per omgeving, per klant — dan maakt het hernoemen van [0] en [1] naar de echte namen er een bruikbaar bestand van, en dat is de hele klus. De sleutels eronder kloppen al.

Zijn de records data in plaats van configuratie, dan helpt hernoemen niet. Honderd secties genoemd naar posities is geen configuratiebestand maar een tabel in de verkeerde notatie. CSV, JSON of een database is dan wat je zoekt, en elk daarvan is één omzetting verwijderd van dezelfde bron.

Ook een bestand van één regel komt genummerd terug

Dit is waar mensen op vastlopen. Een bestand met precies één regel is nog steeds een lijst van één, en het resultaat is een sectie [0] met elk veld van dat record erin — niet de nette INI die je van hetzelfde object apart zou krijgen.

De oplossing zit in het bronformaat, niet in het resultaat: sla die ene regel op als .json en zet JSON om naar INI. Daar worden de sleutels van het record rechtstreeks de sectiekoppen, en het bestand ziet eruit alsof iemand het schreef.

Het ene niveau groepering is al opgebruikt

INI ondersteunt secties en niets binnen secties. Op dit paar is dat ene niveau al ingenomen door het recordnummer, dus elk veld van een record — inclusief eventuele nesting — moet in de sleutelnaam passen.

Een record met een server-object met een poort geeft een regel server.port binnen de genummerde sectie. Niets gaat verloren, maar twee records met dezelfde geneste structuur delen structureel niets meer: het zijn twee secties die toevallig dezelfde sleutelspelling hebben.

Arrays worden genummerde sleutels binnen een genummerde sectie

Een record met een lijst toegestane hosts levert sleutels op genaamd 0, 1 en 2 onder het pad van dat veld. Samen met de genummerde secties kan een uitvoer eindigen met een regel hosts.0 binnen een sectie genaamd [2] — leesbaar en niet fraai.

INI-parsers die lijsten begrijpen, verwachten meestal één regel met kommagescheiden waarden. Heeft de toepassing die conventie, voeg de array dan vóór het omzetten samen tot één string in de bron — dat is minder werk dan achteraf elke groep met de hand aanpassen.

Waarden worden gewoon geschreven, null wordt leeg

Een JSON-waarde true wordt true, een getal zijn cijfers, een null de sleutel met niets na het isgelijkteken, en een string precies zoals hij was. Aanhalingstekens komen alleen waar de waarde er anders niet gelijk zou uitkomen: rond een waarde met een spatie aan begin of eind, een waarde die al met aanhalingstekens begint en eindigt, en een waarde met een regeleinde.

Een regeleinde in een waarde is de zaak om te noemen, want een INI-item is één regel. Het wordt geschreven als een backslash gevolgd door een n binnen de aanhalingstekens, wat voorkomt dat de tekst erna losse regels wordt — of, waar een vervolgregel op een sectiekop lijkt, een sectie die in geen enkel record voorkwam.

Commentaar is de reden dat het bestand bestaat, en het begint zonder

INI ondersteunt commentaar — een regel die begint met een puntkomma of een hekje — en de lezer van deze site respecteert beide in de andere richting. JSON kent geen commentaar, dus het omgezette bestand komt zonder aan.

Omdat de reden om een INI te maken bijna altijd is dat iemand het gaat lezen of bewerken, is het schrijven van die regels de eerste zinvolle bewerking. Welke sectie omgevingsspecifiek is, welke waarde ergens anders moet matchen: dat kon de bron nooit meedragen en is precies waar het doelformaat voor is.

Types komen terug als tekst, en de parser beslist

Elke waarde in een INI-bestand is tekst. Of 8080 een getal is, of true een boolean is en of 007 zijn nullen houdt, beslist wat het bestand leest — Python's configparser maakt het expliciet met getint en getboolean.

Dat is een verlies ten opzichte van de bron, waar de types wel vaststonden, en meestal geen probleem, want een toepassing die INI leest, weet al wat elke instelling hoort te zijn. Waar het wel telt is bij identifiers met voorloopnullen.

Wanneer je beter een ander doel kiest

De eerlijke stopregel voor dit paar: als het resultaat meer dan een handjevol genummerde secties heeft en je kunt ze geen echte naam geven, dan heeft de omzetting een andere vraag beantwoord dan je stelde. INI beschrijft één ding; een lijst records is niet één ding.

De alternatieven vanuit hetzelfde bestand liggen een klik verderop en zijn allemaal beter voor dat geval. CSV of een werkmap als iemand naar de records gaat kijken, SQL of Parquet als een machine ze gaat bevragen, TOML als je eigenlijk een lijst records in een configuratiebestand wilde — dat kent een array-of-tables-constructie die INI simpelweg mist.

De dump blijft op je eigen machine

De omzetting is gewone JavaScript in dit tabblad. Er wordt niets geüpload, er is geen account of wachtrij, en de gratis versie accepteert tot 100 MB — een limiet die geen configuratiebestand ooit haalt.

Dat weegt zwaarder dan de bestandsgrootte suggereert. Instellingendumps bevatten connectiestrings, API-endpoints, interne hostnamen en, vaker dan iemand toegeeft, een wachtwoord dat eigenlijk een omgevingsvariabele had moeten zijn.

Zo zet je NDJSON naar INI om

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

NDJSON of INI: wat er verandert

NDJSON vergeleken met INI
NDJSONINI
Volledige naamNewline-Delimited JSONINI-configuratie
Bestandsextensie.ndjson, .jsonl.ini, .cfg, .conf
Mediatypeapplication/x-ndjsontext/plain
Voor het eerst gepubliceerd20131985
LicentieOpen standaardOpen standaard
Stand van zakenActueelOud, wordt overal nog gelezen
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenJSON, CSVTOML, YAML

Het resultaat openen

De gebruikelijke programma's overlappen niet: NDJSON open je in jq en pandas, INI in Notepad en Visual Studio Code — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.

Waarvoor elk formaat bedoeld is

De twee mikken op ander werk: NDJSON op gegevens tussen programma’s verplaatsen en streamen, INI op bewerken. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.

INI stamt uit 1985. Notepad en Visual Studio Code lezen het formaat.

INI verscheen in 1985 en NDJSON in 2013. Het oudste is doorgaans het veiligste bestand om te overhandigen; het nieuwste doet hetzelfde werk met minder bytes.

Van NDJSON naar INI: veelgestelde vragen

Wordt mijn NDJSON-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 NDJSON naar INI 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 NDJSON naar INI?

NDJSON en INI beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. INI kent geen nesting. Alles onder één niveau wordt platgeslagen tot sleutels met punten ertussen.

Moet ik iets installeren om een INI-bestand te openen?

Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat INI Configuration normaal weergeeft.

Meer over deze formaten