INI naar JSON omzetten

Hier zet je INI naar JSON 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. JSON bewaart precies wat INI bewaarde.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.

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

Het object waarin je INI-bestand verandert

Het resultaat is één JSON-object. Elke sectiekop wordt een sleutel met een eigen object, en de sleutel-waardeparen daaronder worden de eigenschappen van dat object. Sleutels vóór de eerste sectiekop — wat veel tools het globale blok noemen — staan op het hoogste niveau naast de sectieobjecten.

Dat is de hele structurele vertaling, want er is verder niets in een INI-bestand om te vertalen. Wat dit paar de moeite waard maakt om te lezen, is niet de vorm maar de waarden, die de overtocht minder letterlijk overleven dan de vorm.

De typebeslissing die de INI-lezer namens jou neemt

Een INI-bestand kent geen typen. Alles na het isgelijkteken is tekens, en elk programma dat het leest beslist zelf wat die tekens betekenen. Deze lezer beslist zo: de exacte tekst true en false worden JSON-booleans, alles wat als een eindig getal leest wordt een JSON-getal, en de rest blijft tekst.

Voor de meeste configuratie is dat de juiste keuze en scheelt het een parseInt-stap aan de andere kant. Een poort komt eruit als 8080 in plaats van "8080". De prijs is dat de lezer geen hoeveelheid van een identificatiecode kan onderscheiden, en daar ontstaat de schade.

Waarden met voorloopnullen, hexadecimaal en te grote getallen

Vier gevallen falen stilzwijgend en komen alle vier in echte configbestanden voor. Een identificatiecode geschreven als 007 wordt het getal 7. Een Unix-bestandsmodus geschreven als 0755 wordt 755, een andere modus die zo ook wordt toegepast. Een hexadecimaal masker geschreven als 0x1F wordt 31, correct in waarde en fout in elke logregel die het terugprint.

Het vierde is subtieler: een geheel getal groter dan ongeveer negen biljard verliest precisie, omdat JSON-getallen IEEE-doubles zijn. Bevat een sleutel een snowflake-ID of serienummer, zet het dan tussen aanhalingstekens in de bron-INI, of geef het een niet-numeriek voor- of achtervoegsel.

De waarden die een INI-bestand intact doorstaan

Het is nuttig om te weten welke sleutels je niet hoeft te controleren. Alles met een eenheid erbij is veilig, dus een geheugenlimiet geschreven als 128M blijft de tekst 128M. IP-adressen blijven tekst, zo ook kloktijden zoals 08:00, paden, URL’s, en alles met een letter die geen deel is van een getal.

Een waarde met een isgelijkteken erin overleeft ook, want de regel wordt alleen bij het eerste teken gesplitst. Omringende aanhalingstekens worden verwijderd, maar alleen het buitenste paar. Binnen die aanhalingstekens, en alleen daar, begint een backslash een ontsnappingsteken: backslash-n wordt een regeleinde.

On en Off: de INI-booleans die JSON niet herkent

Windows-INI-bestanden en php.ini gebruiken On en Off veel vaker dan true en false, en de lezer behandelt ze niet als booleans. Ze komen eruit als de tekst «On» en «Off», wat verdedigbaar is maar bijna nooit is wat de gebruiker van de JSON verwacht.

Hetzelfde geldt voor yes en no, en voor 1 en 0 als vlaggen gebruikt, die getallen worden in plaats van booleans. Normaliseer die sleutels expliciet in de code die de JSON leest in plaats van consistentie aan te nemen.

Sleutelvolgorde, en het ene geval waarin de JSON herordent

Sleutelvolgorde blijft bijna overal behouden, wat telt als je een diff leest in plaats van een machine. Secties komen in de volgorde waarin ze verschenen, sleutels binnen een sectie houden hun geschreven volgorde.

De uitzondering zijn numerieke sleutels. JavaScript-objecten zetten geheeltallige sleutels vooraan in oplopende numerieke volgorde, vóór elke andere sleutel, dus een sectie geschreven als 10, 2, naam komt eruit als 2, 10, naam. Is volgorde betekenisvol in je bestand, dan wil die sectie eigenlijk een JSON-array zijn.

Herhaalde secties in een INI-bestand verdwijnen zonder foutmelding

INI heeft geen specificatie, dus implementaties zijn het oneens over herhaalde sectiekoppen: sommige voegen samen, sommige houden beide, sommige nemen de laatste. Deze lezer begint elke keer een nieuwe, lege sectie bij een kop, dus een bestand met [logging] tweemaal behoudt alleen de sleutels van het tweede blok.

Dat patroon komt voor als configuraties door aaneenschakeling worden opgebouwd — een basisbestand plus een omgevingslaag. Zoek vooraf op dubbele koppen. Dubbele sleutels binnen één sectie gedragen zich hetzelfde, waarbij de laatste toewijzing wint.

JSON kan de commentaren van een INI-bestand niet dragen

Dit verlies is structureel, geen bijzaak. INI ondersteunt commentaar en gebruikt het volop; JSON, zoals gespecificeerd in RFC 8259, kent geen commentaarsyntaxis. Zelfs een omzetter die commentaar wilde bewaren, zou nergens naartoe kunnen zonder een conventie als een _comment-sleutel te verzinnen.

Bij een instellingenbestand is dit vaak het grootste verlies. De notitie die uitlegt waarom een poolgrootte 12 is in plaats van de standaard — niets daarvan komt over. Bewaar het originele INI-bestand in versiebeheer naast de JSON.

De JSON gebruiken zodra je hem hebt

De uitvoer is gewone JSON met inspringing van twee spaties, dus jq, Node, Python en elke JSON Schema-validator lezen hem zonder omhaal. Een sectie wordt een objectpad — .database.host in jq — en een schema kan dan afdwingen dat de poort een getal is.

Omzettingen van bestanden op deze schaal zijn ogenblikkelijk en draaien volledig in de browser, met een plafond van 100 MB op het gratis niveau dat geen configuratiebestand ooit haalt. De echte beperking is niet grootte maar controle: lees de numerieke waarden in de uitvoer één keer na.

Zo zet je INI naar JSON om

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

INI of JSON: wat er verandert

INI vergeleken met JSON
INIJSON
Volledige naamINI-configuratieJavaScript Object Notation
Bestandsextensie.ini, .cfg, .conf.json
Mediatypetext/plainapplication/json
Voor het eerst gepubliceerd19852001
SpecificatieRFC 8259
LicentieOpen standaardOpen standaard
Stand van zakenOud, wordt overal nog gelezenActueel
Opent in een browserGeen browserElke browser
In plaats daarvan overwogenTOML, YAMLXML, YAML, NDJSON

Wat verloren gaat

Opmerkingen gaan niet mee. In INI kun je een bestand van uitleg voorzien en JSON 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.

Het resultaat openen

JSON opent in elke actuele browser. INI komt nog minder ver. Gaat het bestand naar een webpagina of een formulier, dan is dat meestal de hele reden voor de omzetting.

INI stamt uit 1985 en wordt nauwelijks nog gebruikt. JSON is wat actuele programma’s schrijven, dus omzetten gaat ook over leesbaar blijven.

Visual Studio Code leest zowel INI als JSON, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.

Waarvoor elk formaat bedoeld is

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

JSON stamt uit 2001, vastgelegd in RFC 8259. Visual Studio Code, jq en Postman lezen het formaat.

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

Van INI naar JSON: veelgestelde vragen

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

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

Blijven opmerkingen behouden van INI naar JSON?

Opmerkingen gaan niet mee. In INI kun je een bestand van uitleg voorzien en JSON 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