JSON vs JSONL: Wat is het verschil?
Een volledige handleiding voor het begrijpen van JSON- en JSONL (JSON Lines)-formaten, hun verschillen en wanneer je welk formaat moet gebruiken.
Laatst bijgewerkt: februari 2026
Snelle vergelijking
| Eigenschap | JSON | JSONL (JSON Lines) |
|---|---|---|
| Structuur | Enkel object of array | Eén JSON-object per regel |
| Bestandsextensie | .json | .jsonl of .ndjson |
| Parsing | Moet hele bestand parseren | Kan regel voor regel parseren |
| Streaming | Moeilijk | Native ondersteuning |
| Grote bestanden | Geheugenintensief | Geheugenefficiënt |
| Leesbaar voor mensen | Geformatteerd met inspringing | Compact, één record per regel |
| Schemavalidatie | JSON Schema ondersteund | Per-regel JSON Schema |
| Gegevens toevoegen | Moet hele bestand herschrijven | Gewoon een nieuwe regel toevoegen |
Wat is JSON?
JSON (JavaScript Object Notation) is een lichtgewicht gegevensuitwisselingsformaat dat gemakkelijk leesbaar en schrijfbaar is voor mensen, en gemakkelijk parseerbaar en genereerbaar voor machines. Het is gebaseerd op een subset van JavaScript en is de de facto standaard geworden voor gegevensuitwisseling op het web.
Een JSON-bestand bevat een enkele JSON-waarde — typisch een object of een array. Het hele bestand moet als één geheel worden geparseerd om toegang te krijgen tot gegevens erin.
[{"name": "Alice", "age": 30, "city": "New York"},{"name": "Bob", "age": 25, "city": "London"},{"name": "Charlie", "age": 35, "city": "Tokyo"}]
Wat is JSONL (JSON Lines)?
JSONL (JSON Lines), ook bekend als Newline Delimited JSON (NDJSON), is een tekstformaat waarbij elke regel een geldig JSON-object is. Regels worden gescheiden door newline-tekens (\n). In tegenstelling tot standaard JSON is er geen omsluitende array of object rond de gegevens.
Elke regel in een JSONL-bestand is op zichzelf staand en kan onafhankelijk worden geparseerd. Dit maakt JSONL ideaal voor streaminggegevens, logbestanden en het verwerken van grote datasets zonder alles in het geheugen te laden.
{"name": "Alice", "age": 30, "city": "New York"}{"name": "Bob", "age": 25, "city": "London"}{"name": "Charlie", "age": 35, "city": "Tokyo"}
Belangrijkste verschillen tussen JSON en JSONL
1. Bestandsformaat & structuur
JSON verpakt alle gegevens in een enkel object of array. Het bestand moet syntactisch geldig zijn als geheel — een ontbrekende haak aan het einde maakt het hele bestand ongeldig.
JSONL slaat één JSON-object per regel op. Elke regel is onafhankelijk — als één regel een fout heeft, kunnen de andere regels nog steeds worden geparseerd.
2. Parsing & geheugengebruik
JSON vereist het laden en parseren van het volledige bestand in één keer. Een JSON-bestand van 1GB zou ongeveer 1GB+ geheugen nodig hebben om te parseren.
JSONL kan regel voor regel worden gelezen en geparseerd (streaming). Zelfs een JSONL-bestand van 10GB kan worden verwerkt met minimaal geheugen door één regel tegelijk te lezen.
3. Streaming & realtime gegevens
JSON is niet ontworpen voor streaming. Je kunt pas beginnen met het verwerken van gegevens als het volledige bestand of antwoord is ontvangen en geparseerd.
JSONL is ideaal voor streaming. Elke regel kan worden verwerkt zodra deze is ontvangen, waardoor het perfect is voor realtime gegevensfeeds, logs en server-sent events.
4. Gegevens toevoegen & schrijven
Het toevoegen van gegevens aan een JSON-array vereist het lezen van het hele bestand, het parseren, het toevoegen van het nieuwe element en het herschrijven van het complete bestand.
Toevoegen aan een JSONL-bestand is zo eenvoudig als het toevoegen van een nieuwe regel aan het einde. Het is niet nodig bestaande gegevens te lezen of te wijzigen. Dit is O(1) vs O(n) voor JSON.
5. Leesbaarheid voor mensen
JSON ondersteunt pretty-printing met inspringing, waardoor het zeer leesbaar is voor configuratiebestanden en API-responses.
JSONL is compact van opzet — één record per regel. Het is geoptimaliseerd voor machineverwerking in plaats van menselijk lezen, hoewel individuele regels wel pretty-printed kunnen worden.
Wanneer JSON vs JSONL gebruiken
- Je werkt met configuratiebestanden
- Je REST API request/response bodies bouwt
- Je kleine, gestructureerde gegevens opslaat (onder 10MB)
- Gegevens leesbaar en bewerkbaar moeten zijn voor mensen
- Je werkt met geneste, hiërarchische gegevensstructuren
- Gegevensuitwisseling aan browserzijde
- Je grote datasets verwerkt (100MB+)
- Je gegevens in realtime streamt
- Je logbestanden en eventgegevens schrijft
- Je machine learning-modellen traint (OpenAI, Hugging Face)
- ETL-pipelines en gegevensverwerking
- Je regelmatig gegevens toevoegt
- Je gegevens verwerkt met Unix-tools (grep, awk, sed)
Veelvoorkomende toepassingen
Machine Learning & AI
JSONLJSONL is het standaardformaat voor ML-trainingsgegevens. OpenAI gebruikt JSONL voor fine-tuning datasets, en veel ML-frameworks verwachten JSONL-invoer. Elke regel vertegenwoordigt één trainingsvoorbeeld.
Applicatielogging
JSONLServerlogs, applicatie-events en audittrails zijn van nature geschikt voor JSONL. Elk event wordt geschreven als een enkele regel, waardoor het eenvoudig is om toe te voegen, te zoeken met grep en te verwerken met streamingtools.
Web API's & configuratie
JSONREST API's gebruiken doorgaans JSON voor request- en response-bodies. Configuratiebestanden (.json) gebruiken JSON voor leesbare, gestructureerde instellingen met geneste objecten.
Big Data & Analytics
JSONLDatapipelines, ETL-processen en analysetools gebruiken JSONL voor het verwerken van grote hoeveelheden gegevens. Elk record kan onafhankelijk worden verwerkt, wat parallelle verwerking en MapReduce-patronen mogelijk maakt.
Codevoorbeelden
// Reading JSON - must load entire fileconst data = JSON.parse(fs.readFileSync('data.json', 'utf8'));// Access datadata.forEach(item => {console.log(item.name);});
// Reading JSONL - stream line by lineimport { createReadStream } from 'fs';import { createInterface } from 'readline';const rl = createInterface({input: createReadStream('data.jsonl')});for await (const line of rl) {const item = JSON.parse(line);console.log(item.name);}
// JSON array to JSONLconst jsonArray = JSON.parse(fs.readFileSync('data.json', 'utf8'));const jsonl = jsonArray.map(item => JSON.stringify(item)).join('\n');fs.writeFileSync('data.jsonl', jsonl);
// JSONL to JSON arrayconst lines = fs.readFileSync('data.jsonl', 'utf8').split('\n').filter(line => line.trim());const jsonArray = lines.map(line => JSON.parse(line));fs.writeFileSync('data.json', JSON.stringify(jsonArray, null, 2));
JSON & JSONL online converteren
Gebruik onze gratis online tools om direct te converteren tussen JSON- en JSONL-formaten — geen installatie nodig.