Qu'est-ce que JSONL ? Guide complet du format JSON Lines
Tout ce que vous devez savoir sur JSON Lines — syntaxe, exemples, cas d'utilisation et meilleures pratiques.
Dernière mise à jour : février 2026
Qu'est-ce que JSONL ?
JSONL (JSON Lines), également connu sous le nom de Newline Delimited JSON (NDJSON), est un format de données texte où chaque ligne est une valeur JSON valide, séparée par des caractères de retour à la ligne. Contrairement au JSON standard, qui enveloppe les données dans un seul tableau ou objet, JSONL stocke un enregistrement par ligne.
Cette conception simple rend JSONL idéal pour le streaming, la journalisation et le traitement de grands jeux de données — chaque ligne peut être lue, analysée et traitée indépendamment sans charger tout le fichier en mémoire.
Le format a été popularisé par les outils et plateformes qui gèrent d'énormes volumes de données, notamment OpenAI (pour les jeux de données de fine-tuning), BigQuery, Apache Spark et les systèmes de gestion de journaux.
Règles de syntaxe JSONL
Le format JSONL suit quelques règles simples :
- Chaque ligne doit être une valeur JSON valide (objet, tableau, chaîne, nombre, booléen ou null)
- Les lignes sont séparées par des caractères de retour à la ligne (\n)
- Pas de virgules ni de séparateurs entre les lignes
- Les fichiers doivent utiliser l'encodage UTF-8
- Le retour à la ligne final à la fin du fichier est optionnel
- Les lignes vides sont ignorées par la plupart des analyseurs
{"name":"Alice","age":30,"city":"New York"}{"name":"Bob","age":25,"city":"London"}{"name":"Charlie","age":35,"city":"Tokyo"}
Remarque : chaque ligne est un objet JSON complet et autonome. Il n'y a pas de virgules entre les lignes et pas de tableau englobant.
Exemples JSONL
{"id":1,"name":"Alice","email":"alice@example.com"}{"id":2,"name":"Bob","email":"bob@example.com"}{"id":3,"name":"Charlie","email":"charlie@example.com"}
{"user":{"name":"Alice","age":30},"scores":[95,87,92]}{"user":{"name":"Bob","age":25},"scores":[88,91,76]}
Les lignes JSONL n'ont pas besoin d'être toutes du même type — chaque ligne doit simplement être du JSON valide :
{"event":"login","user":"alice","timestamp":"2026-01-15T10:30:00Z"}{"event":"purchase","user":"alice","amount":29.99,"items":["book","pen"]}{"event":"logout","user":"alice","timestamp":"2026-01-15T11:45:00Z"}
L'une des utilisations les plus populaires de JSONL est pour les jeux de données de fine-tuning OpenAI :
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is JSONL?"},{"role":"assistant","content":"JSONL is a text format where each line is a valid JSON value."}]}{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"How do I read a JSONL file?"},{"role":"assistant","content":"Read the file line by line, parsing each line as JSON."}]}
Comment lire des fichiers JSONL
Les fichiers JSONL peuvent être lus avec n'importe quel outil supportant le traitement de texte ligne par ligne. Voici les méthodes les plus courantes :
Utilisez les outils Unix standard pour inspecter les fichiers JSONL :
# View first 5 lineshead -n 5 data.jsonl# Count total lines (records)wc -l data.jsonl# Pretty-print each line with jqcat data.jsonl | jq .# Filter by field valuecat data.jsonl | jq 'select(.age > 30)'
Le module json intégré de Python gère JSONL naturellement :
import jsonwith open('data.jsonl', 'r') as f:for line in f:record = json.loads(line)print(record['name'])
Lisez des fichiers JSONL ligne par ligne avec Node.js :
import { createReadStream } from 'fs';import { createInterface } from 'readline';const rl = createInterface({input: createReadStream('data.jsonl')});for await (const line of rl) {const record = JSON.parse(line);console.log(record.name);}
Comment créer des fichiers JSONL
Créer des fichiers JSONL est simple — il suffit d'écrire une valeur JSON par ligne.
import jsonrecords = [{"name": "Alice", "age": 30},{"name": "Bob", "age": 25},{"name": "Charlie", "age": 35},]with open('output.jsonl', 'w') as f:for record in records:f.write(json.dumps(record) + '\n')
import { writeFileSync } from 'fs';const records = [{ name: 'Alice', age: 30 },{ name: 'Bob', age: 25 },{ name: 'Charlie', age: 35 },];const jsonl = records.map(r => JSON.stringify(r)).join('\n');writeFileSync('output.jsonl', jsonl + '\n');
Peut-on ajouter des commentaires dans JSONL ?
Non. La spécification JSONL ne supporte pas les commentaires. Chaque ligne d'un fichier JSONL doit être une valeur JSON valide — et JSON lui-même n'a pas de syntaxe de commentaire.
Si vous avez besoin d'inclure des métadonnées ou des annotations avec vos données, les solutions de contournement courantes incluent :
- 1Ajoutez un champ de métadonnées à vos objets JSON : '{'"_comment": "données de test", "name": "Alice"'}'
- 2Utilisez un fichier de métadonnées séparé à côté de votre fichier JSONL
- 3Ajoutez les métadonnées comme première ligne du fichier : '{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'
Gardez à l'esprit que les champs de "commentaire" seront analysés comme des données normales. Les applications consommant le fichier JSONL doivent être conçues pour ignorer les champs de métadonnées.
JSONL vs JSON
La différence clé est la structure. JSON enveloppe tout dans une seule valeur, tandis que JSONL stocke une valeur par ligne.
[{"name": "Alice", "age": 30},{"name": "Bob", "age": 25}]
{"name":"Alice","age":30}{"name":"Bob","age":25}
- JSON doit être entièrement chargé en mémoire pour l'analyse ; JSONL peut être lu ligne par ligne
- JSON nécessite des virgules entre les éléments ; JSONL utilise des retours à la ligne
- JSON est meilleur pour les fichiers de configuration et les API ; JSONL est meilleur pour les grands jeux de données et le streaming
- L'ajout à un fichier JSON nécessite la réécriture du fichier entier ; JSONL ajoute simplement une nouvelle ligne
Pour une comparaison détaillée, consultez notre guide complet JSON vs JSONL guide.
Cas d'utilisation courants
Apprentissage automatique et IA
Le plus populaireJSONL est le format standard pour les données d'entraînement ML. OpenAI, Hugging Face et d'autres plateformes d'IA utilisent JSONL pour les jeux de données de fine-tuning car chaque exemple d'entraînement est une ligne autonome qui peut être mélangée, échantillonnée et streamée efficacement.
Fichiers journaux et flux d'événements
JSONLLes systèmes de journalisation structurée (pile ELK, Datadog, CloudWatch) produisent des journaux au format JSONL. Chaque entrée de journal est une ligne JSON, ce qui facilite l'ajout de nouvelles entrées et le traitement des journaux en temps réel.
Traitement Big Data
JSONLDes outils comme Apache Spark, BigQuery et AWS Athena supportent nativement JSONL. Le format ligne par ligne permet un traitement parallèle sur des systèmes distribués — chaque worker peut traiter un bloc de lignes indépendamment.
API de streaming
JSONLLes API qui retournent de grands ensembles de résultats utilisent souvent le streaming JSONL. Le client peut commencer à traiter les résultats immédiatement à leur arrivée, sans attendre la réponse complète.
Extensions de fichiers JSONL
Les fichiers JSONL utilisent couramment ces extensions :
Les trois extensions contiennent le même format — une valeur JSON par ligne. Le type MIME pour JSONL est application/jsonl ou application/x-ndjson.
Essayez nos outils JSONL gratuits
Validez votre syntaxe JSONL, convertissez entre les formats et visualisez les fichiers — le tout dans votre navigateur.