Deze pagina wordt in het Nederlands getoond, de taal waar je browser om vraagt.
De code van deze pagina is niet gestart.
Open je index.html rechtstreeks uit een map, dan worden JavaScript-modules geblokkeerd en gebeurt er niets zodra je een bestand kiest. Serveer de map in plaats daarvan over http:
Gaat open zodra je hierboven een bestand kiest.klaar — verbreek de verbinding en dit blijft gewoon werken.niet beschikbaar in deze browser (al het andere werkt gewoon).heeft https:// of localhost nodig om offline te kunnen bewaren.bewaren lukt hier niet, maar er wordt hoe dan ook niets geüpload.Je bestanden zijn nergens heen gegaan. {total} bestanden geladen, allemaal van deze site zelf. {platform}Iets heeft {hosts} benaderd, en dat doet dit gereedschap nooit. Dat is het waard om na te kijken. {platform}De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} host; geen daarvan heeft een bestand of een byte ervan gekregen.De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} hosts; geen daarvan heeft een bestand of een byte ervan gekregen.Er ging iets mis: {detail}. Herlaad de pagina om opnieuw te beginnen.{count} bestand wordt gelezen…{count} bestanden worden gelezen…Een voorbeeld proberenVoorbeeld wordt gemaakt…Deze browser kon het voorbeeld niet maken. Kies in plaats daarvan een bestand.
JSON-formatter — netjes neerzetten, platdrukken of omzetten
JSON, XML, HTML, CSS en YAML, geformatteerd of omgezet. Er wordt niets in andermans server geplakt.
● Je tekst en code worden nooit geüpload. Er is geen server.
Formatteren en omzetten zijn rekenwerk op een tekenreeks, hier gedaan, in deze pagina. De parsers zijn met de hand geschreven en staan in src/: shared/parse-json.js, shared/parse-xml.js, css.js, shared/parse-yaml.js; en meer is er niet. Deze tool heeft geen enkele netwerkfunctie, niets op te halen en niets te versturen, en dat telt hier zwaarder dan bijna waar ook op deze site: wat mensen in een formatter plakken zijn toegangstokens, sessiecookies, klantgegevens en nog niet uitgebrachte code.
✗ Geen upload
✗ Geen account
✗ Geen groottelimiet
✓ Werkt offline
✓ Open source
Live controle:bezig met controleren…
Offline:bezig met controleren…
Geloof ons vooral niet op ons woord. Open DevTools, hou het tabblad “Netwerk” in de gaten en formatteer iets. Geen enkel verzoek draagt één teken van wat je plakte. Of trek de stekker uit je internet en formatteer het alsnog.
Hoe je de privacybelofte controleert
Wat je plakt kan nergens heen. In de Content-Security-Policy staat elk adres dat deze pagina mag benaderen, en geen daarvan is van ons. Er is hier geen eindpunt waar een geplakt token verzameld zou kunnen worden, en er staat ook niets in de code dat het daarheen zou sturen als dat er wel was.
Niets hier haalt iets op. Er staat nergens in src/ een fetch, een XMLHttpRequest of een sendBeacon. Elke parser en elke schrijver zijn functies in deze pagina die een tekenreeks aannemen en een tekenreeks teruggeven.
De formatters houden wat ze kregen. Een JSON-object komt terug met zijn sleutels in de volgorde waarin je ze schreef en met zijn getallen gespeld zoals jij ze spelde, want src/shared/parse-json.js is een parser en geen aanroep van JSON.parse, die sleutels die op gehele getallen lijken naar voren haalt en een id van twintig cijfers in de dichtstbijzijnde double verandert. De tests in tests/js/text-format.test.js controleren precies dat.
Wat Google laadt, en wat het niet te zien krijgt. De advertentie- en meetscripts komen van Google, de doneerknop van Buy Me a Coffee. Geen van alle krijgt één teken van je tekst mee. Elke regel die hem leest, ontleedt of wegschrijft, wordt vanaf deze herkomst geserveerd en staat in de repository.
Het werkt offline. Verbreek de verbinding en de tool werkt onveranderd door, omdat er nooit een netwerkstap in zat. Eenvoudiger bewijs bestaat er niet.
Controleer het zelf. Je hoeft niets van het bovenstaande op ons woord aan te nemen. Een buildscript maakt deze pagina uit de sjablonen en de configuratie in de repository, en dat script kun je lezen en zelf draaien. Het resultaat staat vastgelegd op de branch dist, dus je kunt wat er geserveerd wordt vergelijken met wat een build van de bronnen oplevert:
De bestanden die je als eerste wilt lezen zijn config/site.toml voor de Content-Security-Policy, src/shared/parse-json.js voor de parser die je sleutels in de volgorde laat staan waarin je ze schreef, en src/convert.js voor waarom een omzetting één parser en één schrijver is, zonder iets ertussen dat beide formaten tegelijk kent.
Als de beveiligingssoftware van je werkgever voor een upload waarschuwt. Die let op het moment dat er in een browser een bestand wordt gekozen, en kan niet weten of de pagina het wil versturen — dus waarschuwt hij bij het kiezen. Hier wordt niets verstuurd: open de ontwikkelaarstools, ga naar Netwerk en kies een bestand. Er is geen verzoek dat het meeneemt, en helemaal geen verzoek behalve de lokale voorbeeldweergave van de pagina. Diezelfde controle doet je IT-afdeling in een halve minuut.
1 Kies de klus
Taal De gok is niet meer dan een startpunt, en corrigeren is één klik.
De sleutels van elk object sorteren Naar hoe de sleutels lezen in plaats van naar hun codepunten, dus item2 komt vóór item10. Alleen JSON.
Naam voor het buitenste element XML heeft bovenaan één element en JSON niet, dus er moet er eentje verzonnen worden.
{reason} (regel {line}, kolom {column})het einde van de teksteen regeleindeeen tab«{ch}»Onverwacht: {found} na het einde van de waardeDe tekst houdt te vroeg opEen sleutel moet een string tussen dubbele aanhalingstekens zijn, en dit is {found}Dubbele punt verwacht na de sleutel, gevonden {found}Onverwacht: {found}Komma of sluitende accolade verwacht, gevonden {found}Komma of sluitende blokhaak verwacht, gevonden {found}Dit object wordt nooit geslotenDeze array wordt nooit geslotenDeze string wordt nooit geslotenNa \u moeten vier hexadecimale cijfers komen\{next} is geen escape die JSON kentEen ruw stuurteken in een string — schrijf het als een escapeDit is geen getal dat JSON toestaatDit commentaar wordt nooit geslotenEen sluitende accolade zonder open blokDit blok wordt nooit geslotenDeze string wordt nooit geslotenDit haakje wordt nooit gesloten«{statement}» is geen declaratie — er staat geen dubbele punt inDit commentaar wordt nooit geslotenDeze CDATA-sectie wordt nooit geslotenDeze declaratie wordt nooit geslotenDeze sluittag wordt nooit afgemaakt<{name}> wordt nooit gesloten</{name}> sluit een tag die nooit geopend is</{name}> sluit een element terwijl <{open}> nog open staatOnverwacht: «{ch}» in <{name}>Een tagnaam moet met een letter beginnen<{name}> wordt nooit afgemaaktHet attribuut «{name}» heeft geen waarde, en dat staat XML niet toeDeze attribuutwaarde wordt nooit geslotenIn XML moet een attribuutwaarde tussen aanhalingstekens staanDeze regel is minder ingesprongen dan het blok waar hij in staatMeer dan één document in dit bestand. Zet ze een voor een om.Deze regel is verder ingesprongen dan de sleutel erbovenHier werd «key: value» verwachtAliassen (*name) worden niet ondersteund — JSON kan niet zeggen «dezelfde knoop twee keer»Tags (!name) worden niet ondersteund — het type zou geraden moeten wordenEen «?»-sleutel wordt hier niet ondersteund«{header}» is geen blokscalair die dit leestEr staat tekst na het sluitende aanhalingstekenAnkers (&name) worden niet ondersteund — JSON kan niet zeggen «dezelfde knoop twee keer»Na \{next} moeten {width} hexadecimale cijfers komen\{next} is geen escape die dit leestDeze string tussen aanhalingstekens wordt nooit geslotenEr staat tekst na het einde van de flow-verzamelingDe flow-verzameling houdt te vroeg opKomma of sluitende blokhaak verwacht in deze flow-reeksDubbele punt verwacht na een sleutel in deze flow-mappingKomma of sluitende accolade verwacht in deze flow-mappingJSON naar YAMLYAML naar JSONJSON naar XMLXML naar JSONEr gaat niets verloren: elk JSON-document is al een YAML-document. Strings komen alleen tussen aanhalingstekens waar ze zonder iets anders zouden zeggen.Commentaar gaat verloren, want JSON heeft nergens plek voor. Ankers, aliassen en tags stoppen de omzetting in plaats van geraden te worden.Een array wordt een herhaald element, wat de enige vorm is die terugleest. Een leeg object en een lege string komen er allebei uit als leeg element.Attributen worden leden met een @ in de naam, de eigen tekst van een element wordt #text waar hij de plek moet delen, en elke waarde blijft een string — XML heeft nooit gezegd welke getallen waren.{language} is geen taal die dit opmaakt.{n} B{n} KB{n} MBHet bestand wordt gelezen…Dat bestand kon niet gelezen worden: {reason}Nog niets.Er kwam niets uit.YAML heeft geen samengeperste vorm die het schrijven waard is: de korte is flow-stijl, en die is onleesbaar.Dit lijkt geen JSON, XML, HTML, CSS of YAML. Kies de taal uit het menu als het er toch een van is.Gelezen als {name}.{name}, plat samengeperst{name}, uitgelegd{what} — van {before} naar {after}, {percent}% eraf{what} — {lines} regels, {size}{name} — {lines} regels, {size}KopiërenGekopieerdGeselecteerd — druk op Ctrl+CJe tekst is nergens heen gegaan. {total} bestanden geladen. {platform}Iets heeft {hosts} benaderd, en dat doet dit gereedschap nooit. {platform}De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} host; geen daarvan heeft er ook maar één teken van gekregen.De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} hosts; geen daarvan heeft er ook maar één teken van gekregen.
Heeft dit geholpen?
Wat ging er mis?
Bedankt — daar hebben we wat aan.
Alleen je antwoord wordt verstuurd, en alleen als je op een knop drukt. Nooit je bestand, niet de naam ervan, en niets erover.
# JSON-formatter — netjes neerzetten, platdrukken of omzetten
JSON, XML, HTML, CSS en YAML, geformatteerd of omgezet. Er wordt niets in andermans server geplakt.
> Formatteer en verklein JSON, XML, HTML, CSS en YAML, en zet JSON om naar YAML of XML en terug. De parsers draaien in je browser en er wordt niets geüpload: een token of een configuratiebestand verlaat je machine dus nooit.
Deze pagina is een interactief hulpmiddel dat volledig in je browser draait, op https://abox.tools/nl/json-formatteren/ — niets van wat je het geeft wordt geüpload. Hieronder staat alles wat de pagina er in woorden over zegt; om het te gebruiken, open je het adres.
## Je tekst en code worden **nooit geüpload**. Er is geen server.
Formatteren en omzetten zijn rekenwerk op een tekenreeks, hier gedaan, in deze pagina. De parsers zijn met de hand geschreven en staan in `src/`: `shared/parse-json.js`, `shared/parse-xml.js`, `css.js`, `shared/parse-yaml.js`; en meer is er niet. Deze tool heeft geen enkele netwerkfunctie, niets op te halen en niets te versturen, en dat telt hier zwaarder dan bijna waar ook op deze site: wat mensen in een formatter plakken zijn toegangstokens, sessiecookies, klantgegevens en nog niet uitgebrachte code.
- ✗ Geen upload
- ✗ Geen account
- ✗ Geen groottelimiet
- ✓ Werkt offline
- ✓ Open source
## Zo formatteer of zet je JSON om zonder het te uploaden
1. **Kies de klus.** Twee tabbladen, één vak: *Formatteren* zet JSON, XML, HTML, CSS en YAML netjes neer of drukt ze plat; *Omzetten* maakt van JSON YAML of XML en terug. De tekst die je net formatteerde is de tekst die je omzet, zonder hem twee keer te plakken.
2. **Plak hem, of sleep het bestand.** Alles wat je kunt selecteren en kopiëren werkt. Een bestand dat je op de kiezer sleept wordt door je eigen browser gelezen en in het vak gezet: er is hier geen uploadstap om over te slaan.
3. **Laat hem de taal uitzoeken, of zeg het.** Het menu zegt waarvoor hij de tekst hield, en dat corrigeren is één klik. Een gok is niet meer dan een startpunt, en daarom wordt hij getoond in plaats van stilletjes toegepast.
4. **Kies de inspringing, of pers het plat.** Twee spaties, vier, of een tab. Platgeperst is hetzelfde document met elke spatie die er alleen stond om het te kunnen lezen eruit gehaald, en het resultaat zegt hoeveel bytes dat scheelde.
5. **Lees de fout waar de fout zit.** Een parser die het hier opgeeft zegt wat hij aantrof en op welke regel en kolom, in plaats van “onverwacht token op positie 4193”. Dat is meestal genoeg om een configuratiebestand te repareren zonder verder iets te openen.
6. **Neem het resultaat mee.** Kopieer het, of download het als bestand, genoemd naar de taal waarin het eruit kwam.
## De uitgebreide versie
[JSON formatteren zonder het aan iemand te geven](https://abox.tools/nl/gidsen/json-formatteren/): JSON in je eigen browser uitlijnen, controleren en verkleinen: wat een formatteerder nooit aan je bestand mag veranderen, hoe je de foutmelding leest, en waarom het uitmaakt in welk vak je het plakt.
## Ook in de gereedschapskist
- [YAML-naar-JSON-omzetter](https://abox.tools/nl/yaml-naar-json-omzetten/): Beide richtingen, en het zegt wat elke richting kost. Niets ervan wordt in de server van iemand anders geplakt.
- [XML-formatter](https://abox.tools/nl/xml-formatteren/): XML uitgelegd om te lezen of plat geperst om te versturen, en beide kanten op omgezet naar JSON. Niets ervan wordt in de server van iemand anders geplakt.
- [Tekstvergelijker](https://abox.tools/nl/tekst-vergelijken/): Twee teksten erin, elk verschil gemarkeerd, regel voor regel en woord voor woord. Er wordt niets in andermans server geplakt.
- [Base64-codeerder & -decodeerder](https://abox.tools/nl/base64-coderen/): Base64, procentcodering, HTML-entiteiten, hex en backslash-escapes, beide kanten op. Er wordt niets in andermans server geplakt.
## Vragen
### Wordt mijn tekst ergens naartoe geüpload?
Nee. Elke parser en elke schrijver op deze pagina is een functie die in je eigen browser draait, op je eigen hardware. Deze tool heeft geen enkele netwerkfunctie: hij haalt nooit iets op en verstuurt nooit iets, en de `Content-Security-Policy` van de pagina noemt elk adres dat ze mag benaderen, waarvan er geen enkele van ons is. Dat is de reden om hem te gebruiken voor een toegangstoken, een sessiecookie of een klantgegeven: zoiets in andermans formatter plakken is het weggeven.
### Verandert JSON formatteren iets anders dan de opmaak?
Nee, en dat is lastiger dan het klinkt. Sleutels houden de volgorde waarin je ze schreef: een formatter die op `JSON.parse` is gebouwd verplaatst sleutels die op gehele getallen lijken stilletjes naar voren, dus `{"10":a,"2":b}` komt terug als `{"2":b,"10":a}`. Getallen houden de cijfers die je typte, dus een id van twintig cijfers raakt zijn laatste drie niet kwijt aan een double en `1e999` wordt geen `null`. Dubbele sleutels blijven allebei staan, want de standaard zegt niet welke wint en er eentje weggooien zou voor jou kiezen zijn.
### Welke talen kan hij formatteren?
JSON, XML, HTML, CSS en YAML. JSON, XML, HTML en CSS kunnen ook platgeperst worden; YAML niet, want zijn korte vorm is flowstijl, en die is onleesbaar, en onleesbaar is het tegenovergestelde van de reden om een bestand in YAML te houden. JavaScript staat er met opzet niet bij: zie de vraag daarover hieronder.
### Waarom formatteert hij geen JavaScript, Python of SQL?
Omdat een programmeertaal netjes neerzetten betekent dat je hem echt moet ontleden, en een formatter die het bijna goed doet is erger dan geen: hij levert code op die er prima uitziet en iets anders doet. JSON, XML, CSS en YAML hebben grammatica's die klein genoeg zijn om met de hand te lezen en met tests te controleren die je zelf kunt draaien. Een JavaScript-formatter is Prettier, en dat is een megabyte parser, die thuishoort in je editor en niet op een webpagina.
### Mijn YAML zegt no en de JSON kwam eruit als tekenreeks. Waarom?
Omdat het een tekenreeks ís, en dit YAML 1.2 leest en geen 1.1. In YAML 1.1 waren `yes`, `no`, `on` en `off` booleans, en dat is de beroemde bug die de landcode van Noorwegen in `false` verandert. YAML 1.2 heeft dat geschrapt en deze tool ook: alleen `true`, `false`, `null` en `~` worden als iets anders dan tekst gelezen. De andere kant op worden die woorden *tussen aanhalingstekens* teruggeschreven, ook al zou deze tool ze zonder die tekens ook als tekst lezen, want wat het bestand daarna opent misschien niet. PyYAML staat nog altijd standaard op 1.1. Streng lezen en behoudend schrijven is de enige combinatie die beide kanten op klopt.
### Wat gaat er verloren bij het omzetten van YAML naar JSON?
Opmerkingen, want JSON heeft er geen plek voor. Ankers, aliassen en tags worden botweg geweigerd in plaats van geraden: elk daarvan zegt iets wat JSON niet kan zeggen, en een omzetter die stilletjes een uitleg koos zou je een document geven dat niet is wat het bestand zei. De andere kant op gaat er niets verloren: elk JSON-document is al een YAML-document.
### Wat gaat er verloren bij het omzetten van JSON naar XML?
Het verschil tussen een leeg object, een lege array en een lege tekenreeks, die alle drie een leeg element worden, en het type van elke waarde, want XML heeft geen types. Daarom laat de omgekeerde omzetting alles tekenreeks in plaats van te besluiten dat `8080` een getal was. Een array wordt een herhaald element, want dat is de enige vorm die weer teruggelezen kan worden, en bij een sleutel die een elementnaam niet kan dragen worden de lastige tekens vervangen, in plaats van een document uit te spugen dat geen enkele parser leest.
### Verandert HTML opnieuw inspringen hoe de pagina eruitziet?
Dat kan, en daar is deze tool eerlijk over. Witruimte tussen twee inline-elementen is een spatie tussen twee woorden, dus die verplaatsen is niet gratis. Twee dingen houden dat in toom: `<pre>` en `<textarea>` worden precies overgenomen zoals ze waren, en een element dat niets dan tekst bevat blijft op één regel staan. Al het andere wordt netjes neergezet.
### Hoe groot mag het bestand zijn?
Hier is geen limiet ingesteld, want er is geen server die ervoor betaalt. Het echte plafond is je eigen machine: een paar megabyte JSON gaat prima, en bij een heel lang document wacht de pagina op een pauze in je typen voordat ze opnieuw formatteert, in plaats van met je om het toetsenbord te vechten.
### Is het gratis, en heb ik een account nodig?
Het is gratis, en er komt geen account, geen inlog, geen proefperiode en geen limiet op hoeveel je plakt aan te pas. De site draait op advertenties, en die betalen hem; die advertenties krijgen niets over je tekst mee.
### Werkt het offline?
Ja. Laad de pagina één keer, verbreek daarna je internetverbinding en hij werkt gewoon door. Dat is meteen de eenvoudigste manier om te bewijzen dat er niets geüpload wordt, want een tool die je tekst wegstuurde om hem te laten formatteren zou ermee ophouden zodra je de stekker eruit trok.
## Hoe je de privacybelofte controleert
- **Wat je plakt kan nergens heen.** In de Content-Security-Policy staat elk adres dat deze pagina mag benaderen, en geen daarvan is van ons. Er is hier geen eindpunt waar een geplakt token verzameld zou kunnen worden, en er staat ook niets in de code dat het daarheen zou sturen als dat er wel was.
- **Niets hier haalt iets op.** Er staat nergens in `src/` een `fetch`, een `XMLHttpRequest` of een `sendBeacon`. Elke parser en elke schrijver zijn functies in deze pagina die een tekenreeks aannemen en een tekenreeks teruggeven.
- **De formatters houden wat ze kregen.** Een JSON-object komt terug met zijn sleutels in de volgorde waarin je ze schreef en met zijn getallen gespeld zoals jij ze spelde, want `src/shared/parse-json.js` is een parser en geen aanroep van `JSON.parse`, die sleutels die op gehele getallen lijken naar voren haalt en een id van twintig cijfers in de dichtstbijzijnde double verandert. De tests in `tests/js/text-format.test.js` controleren precies dat.
- **Wat Google laadt, en wat het niet te zien krijgt.** De advertentie- en meetscripts komen van Google, de doneerknop van Buy Me a Coffee. Geen van alle krijgt één teken van je tekst mee. Elke regel die hem leest, ontleedt of wegschrijft, wordt vanaf deze herkomst geserveerd en staat in de repository.
- **Het werkt offline.** Verbreek de verbinding en de tool werkt onveranderd door, omdat er nooit een netwerkstap in zat. Eenvoudiger bewijs bestaat er niet.
**Controleer het zelf.** Je hoeft niets van het bovenstaande op ons woord aan te nemen. Een buildscript maakt deze pagina uit de sjablonen en de configuratie in de repository, en dat script kun je lezen en zelf draaien. Het resultaat staat vastgelegd op de branch `dist`, dus je kunt wat er geserveerd wordt vergelijken met wat een build van de bronnen oplevert: https://github.com/A-Box-of-Tools/website
De bestanden die je als eerste wilt lezen zijn `config/site.toml` voor de Content-Security-Policy, `src/shared/parse-json.js` voor de parser die je sleutels in de volgorde laat staan waarin je ze schreef, en `src/convert.js` voor waarom een omzetting één parser en één schrijver is, zonder iets ertussen dat beide formaten tegelijk kent.
Zo formatteer of zet je JSON om zonder het te uploaden
Kies de klus. Twee tabbladen, één vak: Formatteren zet JSON, XML, HTML, CSS en YAML netjes neer of drukt ze plat; Omzetten maakt van JSON YAML of XML en terug. De tekst die je net formatteerde is de tekst die je omzet, zonder hem twee keer te plakken.
Plak hem, of sleep het bestand. Alles wat je kunt selecteren en kopiëren werkt. Een bestand dat je op de kiezer sleept wordt door je eigen browser gelezen en in het vak gezet: er is hier geen uploadstap om over te slaan.
Laat hem de taal uitzoeken, of zeg het. Het menu zegt waarvoor hij de tekst hield, en dat corrigeren is één klik. Een gok is niet meer dan een startpunt, en daarom wordt hij getoond in plaats van stilletjes toegepast.
Kies de inspringing, of pers het plat. Twee spaties, vier, of een tab. Platgeperst is hetzelfde document met elke spatie die er alleen stond om het te kunnen lezen eruit gehaald, en het resultaat zegt hoeveel bytes dat scheelde.
Lees de fout waar de fout zit. Een parser die het hier opgeeft zegt wat hij aantrof en op welke regel en kolom, in plaats van “onverwacht token op positie 4193”. Dat is meestal genoeg om een configuratiebestand te repareren zonder verder iets te openen.
Neem het resultaat mee. Kopieer het, of download het als bestand, genoemd naar de taal waarin het eruit kwam.
De uitgebreide versie
JSON formatteren zonder het aan iemand te gevenJSON in je eigen browser uitlijnen, controleren en verkleinen: wat een formatteerder nooit aan je bestand mag veranderen, hoe je de foutmelding leest, en waarom het uitmaakt in welk vak je het plakt.
Nee. Elke parser en elke schrijver op deze pagina is een functie die in je eigen browser draait, op je eigen hardware. Deze tool heeft geen enkele netwerkfunctie: hij haalt nooit iets op en verstuurt nooit iets, en de Content-Security-Policy van de pagina noemt elk adres dat ze mag benaderen, waarvan er geen enkele van ons is. Dat is de reden om hem te gebruiken voor een toegangstoken, een sessiecookie of een klantgegeven: zoiets in andermans formatter plakken is het weggeven.
Verandert JSON formatteren iets anders dan de opmaak?
Nee, en dat is lastiger dan het klinkt. Sleutels houden de volgorde waarin je ze schreef: een formatter die op JSON.parse is gebouwd verplaatst sleutels die op gehele getallen lijken stilletjes naar voren, dus {"10":a,"2":b} komt terug als {"2":b,"10":a}. Getallen houden de cijfers die je typte, dus een id van twintig cijfers raakt zijn laatste drie niet kwijt aan een double en 1e999 wordt geen null. Dubbele sleutels blijven allebei staan, want de standaard zegt niet welke wint en er eentje weggooien zou voor jou kiezen zijn.
Welke talen kan hij formatteren?
JSON, XML, HTML, CSS en YAML. JSON, XML, HTML en CSS kunnen ook platgeperst worden; YAML niet, want zijn korte vorm is flowstijl, en die is onleesbaar, en onleesbaar is het tegenovergestelde van de reden om een bestand in YAML te houden. JavaScript staat er met opzet niet bij: zie de vraag daarover hieronder.
Waarom formatteert hij geen JavaScript, Python of SQL?
Omdat een programmeertaal netjes neerzetten betekent dat je hem echt moet ontleden, en een formatter die het bijna goed doet is erger dan geen: hij levert code op die er prima uitziet en iets anders doet. JSON, XML, CSS en YAML hebben grammatica's die klein genoeg zijn om met de hand te lezen en met tests te controleren die je zelf kunt draaien. Een JavaScript-formatter is Prettier, en dat is een megabyte parser, die thuishoort in je editor en niet op een webpagina.
Mijn YAML zegt no en de JSON kwam eruit als tekenreeks. Waarom?
Omdat het een tekenreeks ís, en dit YAML 1.2 leest en geen 1.1. In YAML 1.1 waren yes, no, on en off booleans, en dat is de beroemde bug die de landcode van Noorwegen in false verandert. YAML 1.2 heeft dat geschrapt en deze tool ook: alleen true, false, null en ~ worden als iets anders dan tekst gelezen. De andere kant op worden die woorden tussen aanhalingstekens teruggeschreven, ook al zou deze tool ze zonder die tekens ook als tekst lezen, want wat het bestand daarna opent misschien niet. PyYAML staat nog altijd standaard op 1.1. Streng lezen en behoudend schrijven is de enige combinatie die beide kanten op klopt.
Wat gaat er verloren bij het omzetten van YAML naar JSON?
Opmerkingen, want JSON heeft er geen plek voor. Ankers, aliassen en tags worden botweg geweigerd in plaats van geraden: elk daarvan zegt iets wat JSON niet kan zeggen, en een omzetter die stilletjes een uitleg koos zou je een document geven dat niet is wat het bestand zei. De andere kant op gaat er niets verloren: elk JSON-document is al een YAML-document.
Wat gaat er verloren bij het omzetten van JSON naar XML?
Het verschil tussen een leeg object, een lege array en een lege tekenreeks, die alle drie een leeg element worden, en het type van elke waarde, want XML heeft geen types. Daarom laat de omgekeerde omzetting alles tekenreeks in plaats van te besluiten dat 8080 een getal was. Een array wordt een herhaald element, want dat is de enige vorm die weer teruggelezen kan worden, en bij een sleutel die een elementnaam niet kan dragen worden de lastige tekens vervangen, in plaats van een document uit te spugen dat geen enkele parser leest.
Verandert HTML opnieuw inspringen hoe de pagina eruitziet?
Dat kan, en daar is deze tool eerlijk over. Witruimte tussen twee inline-elementen is een spatie tussen twee woorden, dus die verplaatsen is niet gratis. Twee dingen houden dat in toom: <pre> en <textarea> worden precies overgenomen zoals ze waren, en een element dat niets dan tekst bevat blijft op één regel staan. Al het andere wordt netjes neergezet.
Hoe groot mag het bestand zijn?
Hier is geen limiet ingesteld, want er is geen server die ervoor betaalt. Het echte plafond is je eigen machine: een paar megabyte JSON gaat prima, en bij een heel lang document wacht de pagina op een pauze in je typen voordat ze opnieuw formatteert, in plaats van met je om het toetsenbord te vechten.
Is het gratis, en heb ik een account nodig?
Het is gratis, en er komt geen account, geen inlog, geen proefperiode en geen limiet op hoeveel je plakt aan te pas. De site draait op advertenties, en die betalen hem; die advertenties krijgen niets over je tekst mee.
Werkt het offline?
Ja. Laad de pagina één keer, verbreek daarna je internetverbinding en hij werkt gewoon door. Dat is meteen de eenvoudigste manier om te bewijzen dat er niets geüpload wordt, want een tool die je tekst wegstuurde om hem te laten formatteren zou ermee ophouden zodra je de stekker eruit trok.