Direct naar de tool
ViewCSV
Niets wordt geüpload

CSV omzetten naar JSON

orders.csv· VOORBEELDGEGEVENS15 rijen · 8 kolommen
Waardetypen
Herkenning gebeurt per kolom en alleen als elke waarde past. Nummers met voorloopnullen en gehele getallen boven 9.007.199.254.740.991 blijven dus tekst.
Kolommen met de namen user.name en user.email worden één object ‘user’ met ‘name’ en ‘email’.
[
  {
    "order_id": "001041",
    "customer": "Julia Jansen",
    "city": "Den Haag",
    "product": "Monitor 27\"",
    "quantity": "7",
    "unit_price": "19.63",
    "order_date": "2026-01-16",
    "status": "refunded"
  },
  {
    "order_id": "001042",
    "customer": "Finn Jansen",
    "city": "Groningen",
    "product": "Coffee beans 1kg",
    "quantity": "4",
    "unit_price": "61.32",
    "order_date": "2026-02-07",
    "status": "paid"
  },
  {
    "order_id": "001043",
    "customer": "Noah de Boer",
    "city": "Utrecht",
    "product": "Monitor 27\"",
    "quantity": "7",
    "unit_price": "5.83",
    "order_date": "2026-03-18",
    "status": "paid"
  },
  {
    "order_id": "001044",
    "customer": "Emma Meijer",
    "city": "Amsterdam",
    "product": "Chair, ergonomic",
    "quantity": "3",
    "unit_price": "74.88",
    "order_date": "2026-04-22",
    "status": "refunded"
  },
  {
    "order_id": "001045",
    "customer": "Julia Janssen",
    "city": "Utrecht",
    "product": "Notebook A5",
    "quantity": "5",
    "unit_price": "",
    "order_date": "2026-05-02",
    "status": "shipped"
  },
  {
    "order_id": "001046",
    "customer": "Julia Bakker",
    "city": "Gent",
    "product": "Chair, ergonomic",
    "quantity": "8",
    "unit_price": "113.31",
    "order_date": "2026-06-17",
    "status": "shipped"
  },
  {
    "order_id": "001047",
    "customer": " Daan van Dijk ",
    "city": "Den Haag",
    "product": "USB-C cable",
    "quantity": "1",
    "unit_price": "48.13",
    "order_date": "2026-07-06",
    "status": "pending"
  },
  {
    "order_id": "001048",
    "customer": "Julia van den Berg",
    "city": "Groningen",
    "product": "Notebook A5",
    "quantity": "1",
    "unit_price": "73.68",
    "order_date": "2026-08-07",
    "status": "pending"
  },
  {
    "order_id": "001049",
    "customer": "Julia van Dijk",
    "city": "Eindhoven",
    "product": "Chair, ergonomic",
    "quantity": "3",
    "unit_price": "102.72",
    "order_date": "2026-09-01",
    "status": "shipped"
  },
  {
    "order_id": "001050",
    "customer": "Finn de Jong",
    "city": "Antwerpen",
    "product": "Monitor 27\"",
    "quantity": "3",
    "unit_price": "137.32",
    "order_date": "2026-01-04",
    "status": "pending"
  },
  {
    "order_id": "001051",
    "customer": "Tess Janssen",
    "city": "Den Haag",
    "product": "Notebook A5",
    "quantity": "9",
    "unit_price": "125.22",
    "order_date": "2026-02-12",
    "status": "refunded"
  },
  {
    "order_id": "001052",
    "customer": "Julia de Jong",
    "city": "Groningen",
    "product": "Desk lamp",
    "quantity": "5",
    "unit_price": "62.89",
    "order_date": "2026-03-04",
    "status": "shipped"
  },
  {
    "order_id": "001053",
    "customer": "Zoë Meijer",
    "city": "Rotterdam",
    "product": "Notebook A5",
    "quantity": "1",
    "unit_price": "127.86",
    "order_date": "2026-04-09",
    "status": "pending"
  },
  {
    "order_id": "001054",
    "customer": "Sophie Visser",
    "city": "Antwerpen",
    "product": "Chair, ergonomic",
    "quantity": "2",
    "unit_price": "99.73",
    "order_date": "2026-05-13",
    "status": "pending"
  },
  {
    "order_id": "001043",
    "customer": "Noah de Boer",
    "city": "Utrecht",
    "product": "Monitor 27\"",
    "quantity": "7",
    "unit_price": "5.83",
    "order_date": "2026-03-18",
    "status": "paid"
  }
]

15 rijen · 1 bestand

Open of plak een CSV-bestand en de JSON verschijnt naast de opties, terwijl je ze aanpast. Standaard wordt elke rij een object met de kolomnamen als sleutels; kies een array van arrays, een object met een array per kolom of JSON Lines als de ontvangende code die vorm verwacht. Elke waarde blijft standaard een string, dus 00731 en nummers van 20 cijfers komen er precies zo uit als ze erin gingen. Zet het herkennen van getallen alleen aan als een kolom JSON-getallen en true/false moet worden. Voor configuratiebestanden schrijft CSV naar YAML dezelfde rijen als YAML. Het bestand wordt in je browser omgezet en nooit geüpload.

Zo zet je CSV om naar JSON

  1. Open een .csv-, .tsv- of .txt-bestand, sleep het naar de tool of plak rijen. Het scheidingsteken en een UTF-8- of UTF-16-byte order mark worden herkend. Een ander scheidingsteken of een oudere codering zoals Windows-1252 of Shift_JIS kies je onder Importinstellingen.
  2. Kies de JSON-structuur. Het voorbeeld toont de eerste 200 rijen van precies de uitvoer die in de download komt.
  3. Stel Waardetypen, Lege cellen, nesten en inspringing in, en kies daarna ‘JSON downloaden’ of Kopiëren.

Wil je veel bestanden met dezelfde instellingen omzetten? Kies Batch: meerdere bestanden omzetten en selecteer ze samen. Elk bestand wordt om de beurt omgezet, en de resultaten worden als één ZIP-bestand gedownload.

JSON-uitvoer: objecten, arrays of JSON Lines

Array van objectenEén object per rij, met de kolomnamen als sleutels: [{"sku": "00731", …}]. De vorm die de meeste API’s en JavaScript-code verwachten.
Array van arraysEerst de kopregel, daarna elke rij als lijst. De kleinste uitvoer; de volgorde van de kolommen ligt expliciet vast.
Object met kolomarrays{"sku": ["00731", "00732"], …} – handig voor grafiekbibliotheken en dataframetools.
JSON LinesEén JSON-object per regel (JSON Lines), zonder array eromheen. Geschikt voor logpijplijnen, laden in BigQuery en verwerking regel voor regel.
Alle waarden als tekst bewarenElke cel wordt een JSON-string, precies zoals in het bestand. Dit is de standaard.
Getallen en true/false herkennenEen kolom wordt alleen JSON-getallen als elke niet-lege waarde een gewoon getal is dat de omzetting heel doorstaat: geen voorloopnullen, maximaal 15 significante cijfers, geen decimale komma. Kolommen met true/false worden booleans. Datums blijven strings.
Lege cellenSchrijf "" of null, of laat de sleutel weg uit dat object.
Kolomnamen met punten nestenuser.name en user.email worden {"user": {"name": …, "email": …}}. Is een naam zowel een waarde als een bovenliggend object (user en user.name), dan blijven die kolommen plat en meldt de tool dat.

Kolomnamen, waarden tussen aanhalingstekens en ID’s in de JSON

  • Komma’s, aanhalingstekens ("") en regeleinden binnen een waarde tussen aanhalingstekens worden gelezen volgens RFC 4180 en als gewone JSON-escapes geschreven (\n, \").
  • Kolomnamen worden precies zo gebruikt als ze er staan, inclusief spaties en niet-Latijnse schriften. Een lege kolomnaam wordt Column 3 en een dubbele name (2), zodat er geen waarde wordt overschreven.
  • Kolomnamen zoals __proto__ of constructor worden als gewone sleutels geschreven.
  • Heeft een rij meer waarden dan de kopregel, dan komen er extra sleutels bij met de namen Column 4, Column 5… Een kortere rij krijgt lege waarden. Er gaat niets verloren.
  • Uitvoer met typen maakt van 0012 nooit 12, en van een ordernummer van 19 cijfers nooit een afgerond drijvendekommagetal: zo’n kolom blijft tekst.

Veelvoorkomende problemen bij CSV naar JSON

  • Alles staat in één sleutel. Het scheidingsteken is verkeerd geraden. Kies onder Importinstellingen komma, puntkomma, tab of verticale streep, en open het bestand opnieuw.
  • Letters met accenten zien eruit als é. Het bestand is geen UTF-8. Kies de codering onder Importinstellingen (bij oudere Excel-exports vaak Windows-1252).
  • Een kolom met getallen is tekst gebleven. Minstens één waarde is geen gewoon getal, bijvoorbeeld 1,5, 12 kg of een waarde met een voorloopnul. Zoek in de kolom met de CSV-viewer om hem te vinden.
  • De foutmelding over aanhalingstekens noemt een record. In dat record wordt een aanhalingsteken geopend en nooit gesloten. Herstel het in de CSV-editor of controleer de export van het bronsysteem.

Grenzen en privacy

Bestanden tot 25 MB, 100.000 rijen of 2 miljoen cellen openen met een live voorbeeld. Grotere bestanden worden in delen omgezet: het bestand wordt twee keer in stukken gelezen (eerst om de kolommen en typen te leren, dan om te schrijven), het voorbeeld wordt vervangen door een melding, en de download bevat alle rijen. Eén uitvoerbestand is maximaal 4 GB.

Het omzetten gebeurt in een achtergrondproces in dit tabblad, zodat de pagina blijft reageren; met Annuleren stop je het. Het CSV-bestand wordt nooit naar een server gestuurd.

Voorbeeld: een productlijst als JSON-objecten

Een productlijst met een SKU met voorloopnullen en een komma tussen aanhalingstekens, omgezet met de standaardinstellingen (alles tekst, array van objecten, inspringing van 2 spaties). Met Getallen en true/false herkennen wordt price 34.9 en in_stock true, terwijl sku "00731" blijft.

CSV
sku,name,price,in_stock
00731,"Desk lamp, brass",34.90,true
00732,Cable tidy,4.50,false
JSON
[
  {
    "sku": "00731",
    "name": "Desk lamp, brass",
    "price": "34.90",
    "in_stock": "true"
  },
  {
    "sku": "00732",
    "name": "Cable tidy",
    "price": "4.50",
    "in_stock": "false"
  }
]

Vragen en antwoorden

Waarom staan getallen standaard tussen aanhalingstekens?

Omdat CSV geen typen kent: 00731, 1.50 en 2024-03-01 zijn allemaal gewoon tekst. Door ze als strings te bewaren, staat in de JSON gegarandeerd precies wat in het bestand stond. Kies het herkennen van getallen als je weet dat een kolom hoeveelheden bevat.

Kan ik hier JSON terugzetten naar CSV?

Nog niet. Deze pagina zet alleen CSV en TSV om naar JSON.

Is JSON Lines hetzelfde als NDJSON?

In de praktijk wel: beide betekenen één volledige JSON-waarde per regel, gescheiden door regeleinden.

Standaarden en bronnen