Tutoriel JSONL : Créer, lire et convertir des fichiers JSONL

Un tutoriel étape par étape couvrant tout ce que vous devez savoir sur le travail avec les fichiers JSONL (JSON Lines). Inclut des exemples de code en Python, JavaScript et des outils CLI.

Dernière mise à jour : février 2026

Qu'est-ce que JSONL ?

JSONL (JSON Lines) est un format texte léger où chaque ligne est une valeur JSON valide et distincte. Contrairement au JSON standard, qui encapsule toutes les données dans un seul tableau ou objet, JSONL stocke un enregistrement par ligne, séparé par des caractères de retour à la ligne (\n).

Cette structure ligne par ligne rend JSONL idéal pour le streaming de grands jeux de données, l'ajout d'enregistrements sans réécrire le fichier, et le traitement des données en parallèle. Il est largement utilisé par OpenAI pour les jeux de données de fine-tuning, par les systèmes de journalisation comme la stack ELK, et par les outils big data tels que BigQuery et Apache Spark.

example.jsonl
{"id":1,"name":"Alice","role":"engineer"}
{"id":2,"name":"Bob","role":"designer"}
{"id":3,"name":"Charlie","role":"manager"}

Comment créer des fichiers JSONL

Créer un fichier JSONL est simple : sérialisez chaque enregistrement comme une chaîne JSON sur une seule ligne et écrivez-la suivie d'un retour à la ligne. Voici des exemples dans les langages les plus populaires.

Python
import json
records = [
{"id": 1, "name": "Alice", "role": "engineer"},
{"id": 2, "name": "Bob", "role": "designer"},
{"id": 3, "name": "Charlie", "role": "manager"},
]
with open("output.jsonl", "w", encoding="utf-8") as f:
for record in records:
f.write(json.dumps(record, ensure_ascii=False) + "\n")
print("Created output.jsonl with", len(records), "records")
JavaScript / Node.js
import { writeFileSync } from 'fs';
const records = [
{ id: 1, name: 'Alice', role: 'engineer' },
{ id: 2, name: 'Bob', role: 'designer' },
{ id: 3, name: 'Charlie', role: 'manager' },
];
const jsonl = records
.map(record => JSON.stringify(record))
.join('\n');
writeFileSync('output.jsonl', jsonl + '\n', 'utf-8');
console.log(`Created output.jsonl with ${records.length} records`);

Manuel / Éditeur de texte

Vous pouvez également créer des fichiers JSONL dans n'importe quel éditeur de texte. Tapez simplement un objet JSON valide par ligne sans virgules entre les lignes, et enregistrez le fichier avec une extension .jsonl. Assurez-vous que chaque ligne est complète et JSON valide.

Comment lire des fichiers JSONL

Parce que chaque ligne est une valeur JSON indépendante, lire des fichiers JSONL est aussi simple que d'itérer sur les lignes. Voici les approches les plus courantes.

Python
import json
with open("data.jsonl", "r", encoding="utf-8") as f:
for line_number, line in enumerate(f, 1):
line = line.strip()
if not line:
continue # skip empty lines
record = json.loads(line)
print(f"Line {line_number}: {record['name']} - {record['role']}")
JavaScript / Node.js
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.jsonl', 'utf-8'),
});
let lineNumber = 0;
for await (const line of rl) {
if (!line.trim()) continue; // skip empty lines
lineNumber++;
const record = JSON.parse(line);
console.log(`Line ${lineNumber}: ${record.name} - ${record.role}`);
}
Ligne de commande (grep / jq)
# Afficher les 10 premières lignes
head -n 10 data.jsonl
# Compter le nombre total d'enregistrements
wc -l data.jsonl
# Afficher joliment chaque ligne avec jq
cat data.jsonl | jq .
# Filtrer les enregistrements où le rôle est "engineer"
cat data.jsonl | jq 'select(.role == "engineer")'
# Extraire uniquement le champ name
cat data.jsonl | jq -r '.name'
# Rechercher des lignes contenant un mot-clé
grep '"Alice"' data.jsonl

Comment convertir JSON en JSONL

Si vous avez un tableau JSON standard, convertir en JSONL signifie écrire chaque élément comme une ligne séparée. C'est l'une des opérations JSONL les plus courantes.

Python
import json
# Lire le tableau JSON
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f) # expects a JSON array
# Écrire en JSONL
with open("data.jsonl", "w", encoding="utf-8") as f:
for record in data:
f.write(json.dumps(record, ensure_ascii=False) + "\n")
print(f"Converted {len(data)} records from JSON to JSONL")
JavaScript / Node.js
import { readFileSync, writeFileSync } from 'fs';
// Lire le tableau JSON
const data = JSON.parse(readFileSync('data.json', 'utf-8'));
// Écrire en JSONL
const jsonl = data
.map(record => JSON.stringify(record))
.join('\n');
writeFileSync('data.jsonl', jsonl + '\n', 'utf-8');
console.log(`Converted ${data.length} records from JSON to JSONL`);

Convertir en ligne

Vous ne voulez pas écrire de code ? Utilisez notre convertisseur JSON to JSONL en ligne gratuit — collez ou téléchargez votre fichier et convertissez instantanément.

Comment convertir CSV en JSONL

Convertir CSV en JSONL consiste à mapper chaque ligne à un objet JSON, en utilisant l'en-tête CSV comme noms de champs. C'est utile lors de la migration de données tabulaires vers un format adapté au streaming ou à l'apprentissage automatique.

Python
import csv
import json
with open("data.csv", "r", encoding="utf-8") as csv_file:
reader = csv.DictReader(csv_file)
with open("data.jsonl", "w", encoding="utf-8") as jsonl_file:
for row in reader:
jsonl_file.write(json.dumps(row, ensure_ascii=False) + "\n")
print("Converted CSV to JSONL successfully")
JavaScript / Node.js
import { readFileSync, writeFileSync } from 'fs';
const csv = readFileSync('data.csv', 'utf-8');
const lines = csv.trim().split('\n');
const headers = lines[0].split(',');
const jsonl = lines.slice(1).map(line => {
const values = line.split(',');
const obj = {'};
headers.forEach((h, i) => obj[h.trim()] = values[i]?.trim());
return JSON.stringify(obj);
}).join('\n');
writeFileSync('data.jsonl', jsonl + '\n', 'utf-8');
console.log('Converted CSV to JSONL successfully');

Convertir CSV en ligne

Convertissez des fichiers CSV au format JSONL instantanément avec notre outil en ligne gratuit — aucun code requis.

Meilleures pratiques JSONL

1

Utilisez l'encodage UTF-8 pour tous les fichiers JSONL. Cela garantit la compatibilité entre les plateformes et supporte les caractères internationaux.

2

Écrivez exactement un objet JSON par ligne. Ne divisez jamais un objet JSON sur plusieurs lignes ou ne placez jamais plusieurs objets sur la même ligne.

3

N'ajoutez pas de virgules entre les lignes. Contrairement aux tableaux JSON, JSONL utilise les caractères de retour à la ligne comme seul délimiteur.

4

Validez chaque ligne indépendamment. Chaque ligne doit être une valeur JSON complète et valide. Utilisez un validateur JSONL pour détecter les erreurs de syntaxe tôt.

5

Utilisez des lectures en streaming pour les gros fichiers. Au lieu de charger tout le fichier en mémoire, traitez-le ligne par ligne en utilisant readline (Node.js) ou l'itération de fichiers (Python).

6

Gardez les enregistrements cohérents en structure. Bien que JSONL permette différents schémas par ligne, garder une structure uniforme facilite grandement le traitement des données.

7

Évitez les espaces en fin de ligne. Assurez-vous que les lignes n'ont pas d'espaces ou de tabulations supplémentaires qui pourraient causer des problèmes d'analyse.

8

Terminez le fichier par un retour à la ligne. Un retour à la ligne final après le dernier enregistrement aide les outils comme wc et cat à gérer correctement le fichier.

Erreurs JSONL courantes

Encapsuler dans un tableau
Wrong
[
  {"name":"Alice"},
  {"name":"Bob"}
]
Correct
{"name":"Alice"}
{"name":"Bob"}

JSONL n'est pas un tableau JSON. N'encapsulez pas les lignes dans des crochets et n'ajoutez pas de virgules entre elles. Chaque ligne est autonome.

Virgules entre les lignes
Wrong
{"name":"Alice"},
{"name":"Bob"},
Correct
{"name":"Alice"}
{"name":"Bob"}

Les virgules finales après chaque ligne ou les virgules entre les lignes sont invalides en JSONL. Le caractère de retour à la ligne est le seul séparateur.

Objets JSON multi-lignes
Wrong
{
  "name": "Alice",
  "age": 30
}
Correct
{"name":"Alice","age":30}

Chaque objet JSON doit tenir sur une seule ligne. Le JSON joliment formaté avec indentation et sauts de ligne n'est pas du JSONL valide.

Caractères spéciaux non échappés
Wrong
{"text":"She said "hello""}
Correct
{"text":"She said \"hello\""}

Les guillemets et caractères spéciaux à l'intérieur des chaînes JSON doivent être correctement échappés avec des barres obliques inverses. Les guillemets non échappés casseront l'analyseur JSON.

Valider votre JSONL

Après avoir créé votre fichier JSONL, validez-le pour détecter les erreurs de syntaxe tôt. Notre validateur gratuit vérifie chaque ligne instantanément.

Essayez nos outils JSONL gratuits

Visualisez, validez et convertissez des fichiers JSONL jusqu'à 1 Go directement dans votre navigateur. Aucun téléversement requis, 100% privé.

Questions fréquemment posées

Tutoriel JSONL — Créer, lire, valider et convertir des fi...