Cos'è JSONL? Guida completa al formato JSON Lines
Tutto quello che devi sapere su JSON Lines — sintassi, esempi, casi d'uso e best practice.
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
'{'"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.