100 % locale — i tuoi dati non lasciano mai il tuo browser

JSON in NDJSON — un record per riga

Trasforma un array JSON in JSON delimitato da ritorni a capo. Un documento per riga, minificato, pronto per bq load o un’API di flusso.

Istantaneo Privato Zero cookie

Input JSON

Output NDJSON

Che cosa fa questo strumento

Un array JSON diventa un documento JSON per riga.

[
  { "id": 1, "name": "Ada" },
  { "id": 2, "name": "Grace" }
]
{"id":1,"name":"Ada"}
{"id":2,"name":"Grace"}

Ogni riga è minificata, e non è una scelta di stile: un documento indentato occupa più righe, e in NDJSON un ritorno a capo significa record successivo. L’indentazione e il formato si escludono.

La radice dev’essere un array

L’array è l’elenco dei record. Un oggetto alla radice è un documento singolo; spezzarlo in righe vorrebbe dire decidere che le sue chiavi sono record — una supposizione che questo strumento non fa. La conversione si ferma.

Gli elementi, invece, sono liberi: null, 42 e "testo" sono documenti JSON validi e quindi righe NDJSON valide. I record di solito sono oggetti, ma qui nulla lo impone.

Gli interi lunghi tengono le loro cifre

[{ "id": 12345678901234567890 }]

esce con tutte e venti le cifre. Un convertitore che passa per un numero JavaScript scrive invece 12345678901234567000, in silenzio: il valore cambia e il file resta perfettamente ben formato.

Questo faceva esattamente così. Il difetto è stato trovato scrivendo questa pagina e corretto; l’identificatore ora sopravvive all’andata e ritorno per NDJSON.

Un array vuoto dà un file vuoto

[] non produce alcuna uscita, ed è la risposta giusta: NDJSON non ha altro modo di scrivere «zero record» che un file vuoto. Vuol dire che un risultato vuoto e un ingresso vuoto si somigliano — utile saperlo prima di concludere che non è successo niente.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Perché la radice dev’essere un array?
Perché NDJSON è un elenco di record e l’array è quell’elenco. Un oggetto alla radice è un documento singolo, e non c’è modo onesto di decidere se sia un record o una collezione da spezzare. Viene rifiutato invece che indovinato.
Che fine fa un ritorno a capo dentro una delle mie stringhe?
Viene scritto `\n`, come JSON impone, e resta quindi dentro la riga. Qui conta più che altrove: in NDJSON il ritorno a capo separa i record, e uno vero in mezzo a un documento taglierebbe un record in due metà non analizzabili.
Il mio file è un solo array da un milione di righe. È un problema?
È il caso per cui NDJSON esiste, ma la conversione legge comunque tutto l’array in memoria: l’ingresso è un documento JSON, e un documento dev’essere completo per essere analizzato. Oltre una certa dimensione, uno strumento a flusso come `jq -c ".[]"` è quello giusto.

Convertitori correlati