JSONL vs NDJSON: Qual è la Differenza?

Una guida completa che confronta JSONL (JSON Lines) e NDJSON (Newline Delimited JSON) — due nomi per quasi lo stesso formato, con sottili differenze che vale la pena conoscere.

Ultimo aggiornamento: febbraio 2026

Confronto Rapido: JSONL vs NDJSON

CaratteristicaJSONL (JSON Lines)NDJSON
Nome CompletoJSON LinesNewline Delimited JSON
Estensione File.jsonl.ndjson
Specificajsonlines.org (informale)github.com/ndjson/ndjson-spec (specifica informale)
OrigineConvenzione della comunità, popolarizzata da strumenti di data scienceProposto da Chris Olah, Thorsten Ball e altri
Delimitatore di Riga\n (newline)\n (newline)
Tipo MIMEapplication/jsonl (non ufficiale)application/x-ndjson
Supporto StreamingSì, riga per rigaSì, riga per riga
AdozioneOpenAI, Hugging Face, ecosistema ML/AIElasticsearch, Apache Spark, data engineering

Cos'è JSONL (JSON Lines)?

JSONL, abbreviazione di JSON Lines, è un formato di dati basato su testo in cui ogni riga contiene un singolo valore JSON valido. Le righe sono separate da caratteri di nuova riga (\n). Il formato è stato popolarizzato dalle comunità di machine learning e data science, ed è definito informalmente su jsonlines.org.

I file JSONL utilizzano l'estensione .jsonl. Il formato è diventato lo standard per i dati di addestramento AI e ML — OpenAI richiede file .jsonl per il fine-tuning, e i dataset di Hugging Face utilizzano comunemente il formato JSON Lines.

data.jsonl
{"id": 1, "text": "Hello world", "label": "greeting"}
{"id": 2, "text": "How are you?", "label": "question"}
{"id": 3, "text": "Goodbye", "label": "farewell"}

Cos'è NDJSON (Newline Delimited JSON)?

NDJSON, o Newline Delimited JSON, è un formato di dati in cui ogni riga è un valore JSON valido separato da caratteri di nuova riga. La specifica è ospitata su github.com/ndjson/ndjson-spec ed è stata formalizzata per fornire uno standard più strutturato per dati JSON delimitati da riga.

I file NDJSON utilizzano l'estensione .ndjson e hanno un tipo MIME registrato application/x-ndjson. Il formato è ampiamente adottato nel data engineering, nell'elaborazione dei log e nelle applicazioni di streaming — Elasticsearch, Apache Spark e molte API HTTP streaming utilizzano NDJSON.

data.ndjson
{"id": 1, "text": "Hello world", "label": "greeting"}
{"id": 2, "text": "How are you?", "label": "question"}
{"id": 3, "text": "Goodbye", "label": "farewell"}

JSONL e NDJSON Sono lo Stesso Formato?

In pratica, sì — JSONL e NDJSON sono formati funzionalmente identici. Entrambi memorizzano un valore JSON per riga, separati da caratteri di nuova riga (\n). Un file .jsonl e un file .ndjson con gli stessi dati sono completamente intercambiabili, e qualsiasi strumento che legge un formato può leggere l'altro.

Le differenze sono puramente nel nome, nell'adozione della comunità e nelle convenzioni di metadati. JSONL (JSON Lines) è emerso dalla comunità di data science e machine learning, mentre NDJSON (Newline Delimited JSON) è stato formalizzato dalla comunità di data engineering e web streaming. Pensalo come "movie" vs "film" — stessa cosa, preferenze di nome diverse in cerchie diverse.

La differenza più significativa è l'estensione del file (.jsonl vs .ndjson) e il tipo MIME. NDJSON ha un tipo MIME più ampiamente riconosciuto (application/x-ndjson) che viene utilizzato in contesti di streaming HTTP, mentre i file JSONL sono lo standard nei flussi di lavoro AI/ML. Quando scegli tra loro, segui la convenzione del tuo ecosistema.

Differenze Chiave tra JSONL e NDJSON

1. Specifica e Autorità

JSONL

Definito su jsonlines.org con una specifica concisa e informale. La specifica è semplice: ogni riga è un valore JSON valido, le righe sono separate da '\n' e si raccomanda la codifica UTF-8.

NDJSON

Definito su github.com/ndjson/ndjson-spec con una specifica leggermente più formale. NDJSON richiede esplicitamente che ogni riga sia un valore JSON valido e che il separatore di riga sia '\n' (non '\r\n'), con una nuova riga finale raccomandata.

2. Estensione File

JSONL

Utilizza l'estensione .jsonl. Questo è lo standard per i file di fine-tuning di OpenAI, i dataset di Hugging Face e la maggior parte degli strumenti ML/AI. GitHub e VS Code riconoscono i file .jsonl con evidenziazione della sintassi.

NDJSON

Utilizza l'estensione .ndjson. Questo è comune negli strumenti di data engineering, nelle API bulk di Elasticsearch e nelle risposte HTTP streaming. Molti editor supportano anche l'evidenziazione della sintassi .ndjson.

3. Tipo MIME

JSONL

Nessun tipo MIME registrato ufficialmente. I tipi non ufficiali comuni includono application/jsonl e application/json-lines. In pratica, molti sistemi utilizzano application/jsonl o ricadono su application/json.

NDJSON

Utilizza application/x-ndjson come tipo MIME. Questo è più ampiamente riconosciuto in contesti HTTP ed è utilizzato da Elasticsearch, dallo standard Fetch API streaming e da vari framework web per risposte streaming.

4. Adozione della Comunità e dell'Ecosistema

JSONL

Dominante nell'ecosistema AI/ML. OpenAI, Anthropic, Google Gemini, Hugging Face e la maggior parte dei framework ML utilizzano .jsonl. Il termine 'JSONL' è più comunemente cercato e riconosciuto nella comunità degli sviluppatori in generale.

NDJSON

Preferito nel data engineering e nei sistemi backend. Elasticsearch, Apache Spark, PostgreSQL COPY e molti strumenti di aggregazione log utilizzano NDJSON. Il pacchetto npm ndjson ha milioni di download settimanali.

Quando Usare JSONL vs NDJSON

JSONLUsa .jsonl Quando:
  • Prepari dati di addestramento per OpenAI, Anthropic o altri fine-tuning di LLM
  • Lavori con dataset di Hugging Face
  • Costruisci pipeline ML e preprocessing dei dati
  • Il tuo team o la documentazione si riferiscono a 'JSON Lines'
  • Carichi file su piattaforme AI/ML che si aspettano l'estensione .jsonl
  • Lavori in ambienti Python di data science
NDJSONUsa .ndjson Quando:
  • Fai streaming di dati JSON su HTTP (Server-Sent Events, fetch streaming)
  • Lavori con l'API bulk di Elasticsearch
  • Costruisci pipeline di dati con Apache Spark o strumenti simili
  • Imposti intestazioni Content-Type (application/x-ndjson)
  • La tua infrastruttura o il tuo team utilizza la convenzione NDJSON
  • Lavori con librerie di streaming Node.js

Esempi di Codice: Leggere JSONL e NDJSON

Leggere un File .jsonl (Python)
# Reading JSONL - exactly the same as reading NDJSON
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line.strip())
print(record['text'])
# Output:
# Hello world
# How are you?
# Goodbye
Leggere un File .ndjson (JavaScript/Node.js)
// Reading NDJSON - exactly the same as reading JSONL
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.ndjson')
});
for await (const line of rl) {
const record = JSON.parse(line);
console.log(record.text);
}
// Output:
// Hello world
// How are you?
// Goodbye

Valida i tuoi file JSONL / NDJSON

Verifica se il tuo file .jsonl o .ndjson è formattato correttamente. Il nostro validatore gratuito controlla ogni riga per la sintassi JSON valida.

Visualizza File JSONL e NDJSON Istantaneamente

Apri file .jsonl e .ndjson fino a 1GB nel tuo browser. Nessun upload, nessuna registrazione — funziona con entrambi i formati senza problemi.

Domande Frequenti

JSONL vs NDJSON — Sono la Stessa Cosa? Differenze Princip...