Convertire TOML in NDJSON

Qui converti TOML in NDJSON gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.

  • Dove gira Nel tuo browser. Il file non viene mai caricato.
  • Senza perdita Non si butta via niente. NDJSON conserva esattamente ciò che TOML teneva.
  • Limite di dimensione Fino a 100 MB per file, gratis e senza account.

Fino a 100 file alla volta. Formati diversi insieme non sono un problema.

Un file config, una riga, e perché è l'unità giusta

Un documento TOML è una tabella. Non esiste un file TOML che sia una lista al livello superiore — la specifica non lo permette — quindi il confine di record di cui NDJSON ha bisogno non appare mai dentro un singolo file. L'intero documento diventa una riga.

Per la maggior parte delle sorgenti sarebbe un limite. Qui è la forma del problema: nessuno vuole un pyproject.toml diviso in frammenti, e chiunque ne converta uno in NDJSON sta costruendo una collezione dove ogni file è un record. L'unità del formato e l'unità della domanda capitano di coincidere, cosa non vera per ogni coppia su questo sito.

Costruire un inventario di ogni Cargo.toml in un workspace

Il flusso di lavoro è: convertire ogni file, aggiungere la riga a un output crescente. Poiché ogni riga è un valore JSON completo e autonomo e nulla avvolge il file — nessun array che racchiude, nessuna virgola tra i record — la concatenazione è l'intero passo di unione. Due righe da due conversioni sono un file NDJSON valido a due record.

Ciò che si ottiene è un dataset a cui si possono porre domande. Quali crate fissano una versione specifica di dipendenza, quali pacchetti non dichiarano alcuna licenza, quali repository puntano ancora a una vecchia edizione — sono tutte un'unica query sulla collezione invece di uno script che percorre directory e analizza file. Costruire quell'inventario è molto più utile che leggere una singola config, ed è il motivo per cui questa coppia esiste.

Il campo che la conversione non può aggiungere per voi

Un record senza sorgente è quasi inutile in un inventario. Il convertitore legge il contenuto di un file e nient'altro — non conosce il percorso, il repository o il commit — quindi la riga che produce non ha alcun campo che dica da dove viene.

Lo si aggiunge da sé, in uno di due momenti. Un passaggio jq durante la concatenazione può iniettare una chiave percorso per riga, mantenendo intoccati i file TOML, l'approccio giusto per una flotta che non si possiede. In alternativa, una chiave dentro ogni file TOML lo nomina, sopravvivendo a ogni conversione futura ma significando modificare file che appartengono ad altri. Il primo scala; il secondo è più onesto quando il file dovrebbe davvero identificarsi da sé.

Cosa contiene una riga

JSON compatto: nessuna indentazione, nessuno spazio dopo i due punti, chiavi nell'ordine dichiarato dal TOML, terminante con un a capo. Le tabelle diventano oggetti nidificati e gli array di tabelle diventano array di oggetti, quindi un elenco autori o un insieme di target di build arriva nella forma che un motore di query si aspetta.

La riga è lunga quanto la config. Un pyproject.toml sono pochi kilobyte e una config generata adiacente a un lock può essere molto più grande, e un lettore che elabora una riga alla volta deve tenere l'intera riga in memoria. Raramente è un problema alle dimensioni tipiche di una config, e vale la pena saperlo prima che qualcuno punti questo a un file che non è davvero una config.

Valori tipizzati che entrano in uno stream

TOML ha veri tipi temporali e JSON no, quindi ogni data e datetime diventa una stringa. Gli offset sopravvivono invece di essere normalizzati a UTC, una data locale arriva esattamente come scritta, e un'ora locale guadagna una componente millisecondi che non aveva nella sorgente. La maggior parte dei caricatori li leggerà come testo a meno che lo schema di destinazione non dica diversamente.

Due letterali float sono lossy in un modo che nulla segnala: inf e nan sono TOML validi e diventano null in JSON, quindi un limite infinito configurato e uno non configurato diventano indistinguibili nel dataset. Anche la distinzione intero-float sparisce, dato che 1.0 si serializza come 1 — importante se una query deve distinguere una versione da un conteggio.

Il file TOML che blocca la conversione

TOML 1.0 richiede interi con segno a 64 bit e i numeri JSON sono double IEEE, quindi un valore sopra circa nove quadrilioni non può essere rappresentato esattamente. Il parser si ferma con un errore che nomina la riga invece di scrivere un numero arrotondato nel dataset.

È il comportamento corretto per un inventario in particolare, dove un numero sbagliato sarebbe indistinguibile da uno giusto su diecimila record. Quando succede, si mette tra virgolette il valore come stringa nel file sorgente — era un identificatore piuttosto che una quantità in ogni caso reale in cui questo capita.

Record che non condividono le stesse chiavi

Le config di progetti diversi non avranno le stesse sezioni. Una dichiara una tabella tool con tre linter dentro, la successiva non ne dichiara nessuna, una terza usa una chiave che nessun altro usa. Ogni riga porta solo le chiavi che il suo file aveva, un vero vantaggio rispetto ad appiattire la stessa collezione in una tabella dove le colonne dovrebbero essere l'unione di tutto.

La destinazione decide quanto costa. Un archivio schema-on-read gestisce nativamente i record irregolari e lascia che una query chieda una chiave che solo alcuni record portano. Un caricatore con uno schema fisso rifiuterà gli outlier o scarterà i campi. Si campionano i file più larghi e più stretti della collezione prima di definire la destinazione, invece che dopo aver caricato ottomila record.

Commenti, e cosa manca al dataset

I commenti TOML sono il ragionamento dentro una config: perché una dipendenza è fissata, a quale ticket appartiene un workaround, cosa significa un numero magico. NDJSON è JSON per riga e JSON non ha sintassi commenti, quindi tutto ciò sparisce dal dataset.

È accettabile per un inventario e non accettabile come migrazione. Nessuno che interroghi quali pacchetti fissano una versione ha bisogno della prosa circostante; chiunque sostituisca i file TOML con qualcosa generato da questi dati la starebbe buttando via. Si usa lo stream per rispondere a domande sulle config, e si lasciano le config dove sono.

Quando un singolo file JSON è la risposta migliore

Se si ha solo una config da leggere, la si converte in JSON invece. Il JSON indentato è leggibile, jq lo gestisce identicamente, e un file a una riga è peggiore per ogni scopo eccetto l'aggiunta. NDJSON si guadagna il suo posto nel punto in cui ci sono molti file e vanno in qualcosa.

L'altro confine è la ricorrenza. Se l'inventario deve essere ricostruito su un programma, il lavoro appartiene a uno script che percorre l'albero, analizza ogni file con una vera libreria TOML ed emette le righe con il percorso già allegato. Questo convertitore serve per costruire il dataset la prima volta, decidere se le domande a cui risponde valgono la pena di essere automatizzate, e farlo senza che nessuno dei file lasci la propria macchina.

Come convertire TOML in NDJSON

  1. Trascina il tuo file TOML su questa pagina, oppure fai clic per sceglierne uno.
  2. Scegli NDJSON come destinazione. La conversione avviene nel tuo browser e il file non viene caricato.
  3. Scarica il file NDJSON finito.

TOML o NDJSON: cosa cambia

TOML a confronto con NDJSON
TOMLNDJSON
Nome completoTom's Obvious Minimal LanguageNewline-Delimited JSON
Estensione del file.toml.ndjson, .jsonl
Tipo di mediaapplication/tomlapplication/x-ndjson
Prima pubblicazione20132013
SpecificaTOML 1.0
LicenzaStandard apertoStandard aperto
Situazione attualeAttualeAttuale
Si apre nel browserNessun browserNessun browser
Valutato al suo postoYAML, JSON, INIJSON, CSV

Che cosa si perde

I commenti non sopravvivono. TOML permette di annotare un file e NDJSON non ha una sintassi per farlo, quindi ogni riga di spiegazione sparisce — e tocca proprio i file che si commentano: la configurazione che qualcun altro dovrà mantenere.

Che cosa resta

Non si scarta nulla. TOML e NDJSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.

Aprire il risultato

I programmi di sempre non coincidono: TOML si apre in Visual Studio Code, NDJSON in jq e pandas, quindi chi riceve il risultato ha bisogno di uno del secondo gruppo.

A che cosa serve ciascun formato

I due puntano a lavori diversi: TOML a la modifica, NDJSON a spostare dati fra programmi e lo streaming. Vale la pena valutarlo prima, perché il motivo per cui esiste uno è di solito il motivo per cui l'altro risulta scomodo.

TOML è stato pubblicato nel 2013. È descritto in TOML 1.0, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.

NDJSON risale al 2013. jq e pandas lo leggono.

Da TOML a NDJSON: domande frequenti

Il mio file TOML viene caricato da qualche parte?

No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.

Convertire TOML in NDJSON è gratis?

Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.

Si perde qualità convertendo TOML in NDJSON?

No. NDJSON conserva lo stesso contenuto senza buttare via niente: il risultato è identico in qualità all’originale.

La conversione da TOML a NDJSON è senza perdita?

Non si scarta nulla. TOML e NDJSON salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.

I commenti sopravvivono da TOML a NDJSON?

I commenti non sopravvivono. TOML permette di annotare un file e NDJSON non ha una sintassi per farlo, quindi ogni riga di spiegazione sparisce — e tocca proprio i file che si commentano: la configurazione che qualcun altro dovrà mantenere.

Altro su questi formati