Cos'è JSONL? Guida completa al formato JSON Lines
Tutto quello che devi sapere su JSON Lines — sintassi, esempi, casi d'uso e best practice.
Ultimo aggiornamento: febbraio 2026
Cos'è JSONL?
JSONL (JSON Lines), noto anche come Newline Delimited JSON (NDJSON), è un formato di dati basato su testo in cui ogni riga è un valore JSON valido, separato da caratteri di nuova riga. A differenza del JSON standard, che avvolge i dati in un singolo array o oggetto, JSONL memorizza un record per riga.
Questo design semplice rende JSONL ideale per lo streaming, il logging e l'elaborazione di grandi set di dati — ogni riga può essere letta, analizzata ed elaborata indipendentemente senza caricare l'intero file in memoria.
Il formato è stato reso popolare da strumenti e piattaforme che gestiscono volumi massivi di dati, tra cui OpenAI (per set di dati di fine-tuning), BigQuery, Apache Spark e sistemi di gestione dei log.
Regole di sintassi JSONL
Il formato JSONL segue poche semplici regole:
- Ogni riga deve essere un valore JSON valido (oggetto, array, stringa, numero, booleano o null)
- Le righe sono separate da caratteri di nuova riga (\n)
- Nessuna virgola o separatore tra le righe
- I file devono usare la codifica UTF-8
- La nuova riga finale alla fine del file è opzionale
- Le righe vuote vengono ignorate dalla maggior parte dei parser
{"name":"Alice","age":30,"city":"New York"}{"name":"Bob","age":25,"city":"London"}{"name":"Charlie","age":35,"city":"Tokyo"}
Nota: Ogni riga è un oggetto JSON completo e indipendente. Non ci sono virgole tra le righe e nessun array di contenimento.
Esempi 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]}
Le righe JSONL non devono essere tutte dello stesso tipo — ogni riga deve solo essere JSON valido:
{"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"}
Uno degli usi più popolari di JSONL è per i set di dati di fine-tuning di 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."}]}
Come leggere i file JSONL
I file JSONL possono essere letti con qualsiasi strumento che supporti l'elaborazione del testo riga per riga. Ecco i metodi più comuni:
Usa strumenti Unix standard per ispezionare i file 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)'
Il modulo json integrato di Python gestisce JSONL in modo naturale:
import jsonwith open('data.jsonl', 'r') as f:for line in f:record = json.loads(line)print(record['name'])
Leggi file JSONL riga per riga in 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);}
Come creare file JSONL
Creare file JSONL è semplice — basta scrivere un valore JSON per riga.
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');
Si possono aggiungere commenti in JSONL?
No. La specifica JSONL non supporta i commenti. Ogni riga in un file JSONL deve essere un valore JSON valido — e JSON stesso non ha sintassi per i commenti.
Se hai bisogno di includere metadati o annotazioni insieme ai tuoi dati, le soluzioni comuni includono:
- 1Aggiungere un campo metadati ai tuoi oggetti JSON: '{'"_comment": "dati di test", "name": "Alice"'}'
- 2Usare un file di metadati separato accanto al tuo file JSONL
- 3Aggiungere metadati come prima riga del file: '{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'
Tieni presente che qualsiasi campo "commento" verrà analizzato come dati regolari. Le applicazioni che consumano il file JSONL dovrebbero essere progettate per ignorare i campi di metadati.
JSONL vs JSON
La differenza chiave è la struttura. JSON avvolge tutto in un singolo valore, mentre JSONL memorizza un valore per riga.
[{"name": "Alice", "age": 30},{"name": "Bob", "age": 25}]
{"name":"Alice","age":30}{"name":"Bob","age":25}
- JSON deve essere completamente caricato in memoria per essere analizzato; JSONL può essere letto riga per riga
- JSON ha bisogno di virgole tra gli elementi; JSONL usa le nuove righe
- JSON è migliore per file di configurazione e API; JSONL è migliore per grandi set di dati e streaming
- Aggiungere dati a JSON richiede la riscrittura dell'intero file; JSONL semplicemente aggiunge una nuova riga
Per un confronto dettagliato, consulta la nostra guida completa JSON vs JSONL guide.
Casi d'uso comuni
Apprendimento automatico e IA
Più popolareJSONL è il formato standard per i dati di addestramento ML. OpenAI, Hugging Face e altre piattaforme AI usano JSONL per set di dati di fine-tuning perché ogni esempio di addestramento è una riga indipendente che può essere mescolata, campionata e trasmessa in modo efficiente.
File di log e flussi di eventi
JSONLI sistemi di logging strutturato (ELK stack, Datadog, CloudWatch) producono log in formato JSONL. Ogni voce di log è una riga JSON, rendendo facile aggiungere nuove voci ed elaborare i log in tempo reale.
Elaborazione Big Data
JSONLStrumenti come Apache Spark, BigQuery e AWS Athena supportano JSONL nativamente. Il formato riga per riga consente l'elaborazione parallela su sistemi distribuiti — ogni worker può elaborare un blocco di righe indipendentemente.
API di streaming
JSONLLe API che restituiscono grandi set di risultati spesso usano lo streaming JSONL. Il client può iniziare a elaborare i risultati immediatamente man mano che arrivano, senza attendere la risposta completa.
Estensioni file JSONL
I file JSONL usano comunemente queste estensioni:
Tutte e tre le estensioni contengono lo stesso formato — un valore JSON per riga. Il tipo MIME per JSONL è application/jsonl o application/x-ndjson.
Prova i nostri strumenti JSONL gratuiti
Valida la sintassi JSONL, converti tra formati e visualizza file — tutto nel tuo browser.