JSON naar CSV omrekenen
Zet een JSON-array van objecten om in een CSV-tabel, volledig in je browser.
Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.
Plak een API-respons en krijg een tabel die je in een spreadsheet kunt openen. Elke sleutel die ergens in de array voorkomt, wordt een kolom, en het gebeurt in je browser, dus een payload vol persoonsgegevens verlaat je computer nooit.
Hoe het werkt
Het document moet een array van objecten zijn, want dat is een tabel: één object per rij. Een los object wordt geaccepteerd als tabel van één rij. Al het andere — een kaal getal, een string, een array van strings — heeft geen rijen en wordt gemeld in plaats van geraden.
De kop is de vereniging van alle sleutels in de array, in de volgorde waarin elke sleutel voor het eerst voorkwam, en niet gewoon de sleutels van het eerste object. Een optioneel veld dat in het eerste record ontbreekt, is precies hoe een echte API-respons eruitziet, en alleen de sleutels van de eerste rij nemen zou die kolom voor elke rij weglaten.
Een genest object of een geneste array wordt als JSON in de cel geschreven in plaats van over extra kolommen verdeeld. Platslaan oogt netter maar overleeft de terugweg niet: twee records die verschillend genest zijn, zouden verschillende sets kolommen opleveren, en een sleutel die al een punt bevat, is dan niet meer van een geneste te onderscheiden.
Null wordt een lege cel, true en false worden de woorden true en false, en getallen worden geschreven zoals JSON ze zou schrijven, dus een waarde verandert niet van vorm op weg naar buiten.
Voorbeelden
| Geval | Invoer | Resultaat |
|---|---|---|
| Een sleutel die in het eerste record ontbreekt, krijgt toch een kolom | [{"id": 1}, {"id": 2, "note": "late"}] | id,note 1, 2,late |
Veelgestelde vragen
Waarom staat mijn geneste object als JSON in een cel?
Omdat platslaan niet omkeerbaar zou zijn. Als het ene record drie niveaus diep nest en het volgende één, levert platslaan twee verschillende sets kolommen op uit dezelfde array; en een sleutel die al een punt bevat, is dan niet meer van een genest pad te onderscheiden. Door de structuur in de cel te laten, krijg je bij het terugzetten terug wat je had.
Opent Excel het goed?
Dat hangt meer af van je landinstellingen dan van het bestand. Een spreadsheet met instellingen die decimalen met een komma schrijven, verwacht een puntkomma als scheidingsteken, en daarom staat die in de lijst met scheidingstekens. Opent een bestand met komma's als één kolom per rij, dan is dat de reden.
Mijn array zit in een object. Waarom mislukt het?
Omdat het document als geheel geen lijst met rijen is. Bij een API-respons in de vorm {"data": [...]} moet je de array zelf plakken, niet de verpakking. De verpakking heeft precies één rij — zichzelf — en die omzetten zou een tabel opleveren met één cel waarin alles staat.
Wordt mijn document ergens naartoe geüpload?
Nee. De pagina laadt een klein script dat lokaal omzet. Je kunt de verbinding met het netwerk verbreken zodra de pagina geladen is, en de tool blijft werken.
Goed om te weten
- Alles gebeurt in je browser. Het document wordt niet geüpload, niet gelogd en niet opgeslagen.
- Aanhalingstekens volgen RFC 4180: een veld komt tussen aanhalingstekens als het het scheidingsteken, een dubbel aanhalingsteken of een regeleinde bevat, en een dubbel aanhalingsteken binnen zo'n veld wordt twee keer geschreven. Backslashes zijn gewone tekens en worden nooit als escape behandeld.