Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
Qui converti NDJSON in YAML 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.
Fino a 100 file alla volta. Formati diversi insieme non sono un problema.
Vengono convertiti uno dopo l’altro e scaricati insieme in uno ZIP.
NDJSON in YAML
Il logging strutturato mette interi documenti dentro campi singoli. Una traccia di stack, un’istruzione SQL renderizzata, un corpo di richiesta, un confronto di asserzione — ognuno è testo con ritorni a capo, e il JSON ha esattamente un modo di contenere un ritorno a capo, cioè scrivere i due caratteri barra rovesciata e n. Una traccia Python di quaranta frame arriva quindi come una riga di svariate migliaia di caratteri con \n fra ogni frame.
Il YAML ha un’altra opzione e questa conversione la usa. Qualsiasi stringa contenente un ritorno a capo viene scritta come blocco scalare: la chiave, poi |-, poi le righe vere indentate sotto. La traccia si legge come una traccia. Niente cambia nel valore — gli stessi caratteri entrano ed escono — ma il file smette di combattere con voi.
Chi scrive YAML guardando una sorgente delimitata da nuove righe si aspetterebbe ragionevolmente un flusso multi-documento: ogni record il proprio documento, --- fra loro. Non è quello che viene prodotto. L’intero file diventa un documento contenente una sequenza, con ogni record introdotto da un trattino e i suoi campi indentati sotto.
La scelta ha una conseguenza da sapere prima di costruirci sopra. Questo sito rifiuta del tutto di leggere un flusso YAML multi-documento — quella conversione si ferma invece di scegliere un documento — quindi la forma a documento singolo è quella che va e torna correttamente.
Uno scalare YAML nudo viene risolto dal lettore, quindi chi scrive deve mettere fra virgolette qualsiasi cosa la cui forma nuda tornerebbe come un tipo diverso. Questo mette fra virgolette i casi che contano per i dati esportati: una stringa di cifre, un valore che inizia con un cancelletto o un asterisco, un valore contenente due punti e spazio, e qualsiasi cosa con spazi bianchi iniziali o finali. Un riferimento d’ordine tenuto come stringa "00412" arriva tra virgolette e mantiene i suoi zeri iniziali.
È attenzione di chi scrive, non sicurezza del formato, e la distinzione conta quando qualcuno modifica il file in seguito. Cancellate le virgolette attorno a "00412" e diventerà il numero 412 la prossima volta che qualcosa lo carica.
Il file è scritto per YAML 1.2, dove gli unici booleani sono true e false. Sotto quella regola, NO, yes, on e off sono stringhe ordinarie e vengono correttamente scritte senza virgolette. Caricate lo stesso file con PyYAML, Psych di Ruby o uno dei caricatori Go più vecchi e sono booleani, perché quelli implementano YAML 1.1.
Per un file di configurazione ve ne accorgereste, perché lo leggete. Per un export no: una colonna di codici paese ISO ha un NO da qualche parte fra trentamila righe, e diventa False al caricamento senza nulla che lo indichi. Se il YAML è destinato a un lettore 1.1, mettete fra virgolette quella colonna prima di caricare, oppure tenete il JSON.
Ogni altra destinazione popolare per un export delimitato da nuove righe appiattisce. CSV, TSV, XLSX, SQL e Parquet trasformano tutti un oggetto request annidato in colonne chiamate request.method e request.path, e riconciliano i record contro un unico insieme di colonne. Niente del genere avviene qui.
Un record con un blocco context profondo quattro livelli arriva profondo quattro livelli, indentato. Gli array diventano liste con trattino. I record che portano campi diversi continuano a portare campi diversi — non c’è unione di chiavi, nessuna cella vuota e nessuna tabella sparsa.
Una stringa senza ritorni a capo ma con molta lunghezza — uno user agent, un URL con una lunga query string, un messaggio di errore su una riga — viene avvolta intorno agli ottanta caratteri su righe di continuazione indentate sotto la chiave. Il YAML tratta le interruzioni di riga di uno scalare piatto ripiegato come spazi, quindi il valore resta invariato quando viene riletto.
Significa che un URL può apparire diviso su due righe nel file, il che disorienta la prima volta e non è un danno. Se dovete copiare un valore del genere, prendetelo dalla struttura caricata piuttosto che dal testo, oppure convertite in JSON invece.
Nessuno. Un file YAML che una persona mantiene guadagna il suo formato dalle righe # che spiegano perché un valore è quello che è, e un export convertito non ha righe del genere perché la sorgente non aveva dove tenerle.
È il risultato giusto per un file che leggete una volta e cancellate. È il risultato sbagliato se il YAML sta per essere depositato in un repository, perché il prossimo lettore troverà record senza provenienza — nessuna nota su quale sistema li ha prodotti, quando è stato fatto l’export o quale filtro è stato applicato.
Le righe vuote vengono saltate, incluso il ritorno a capo finale che quasi ogni scrittore lascia alla fine, quindi il numero di voci della lista è il numero di righe non vuote nella sorgente. Una riga che non è JSON valido ferma la conversione con il suo numero nel messaggio invece di essere scartata.
Per un export di fallimenti quel comportamento si guadagna il suo posto. L’ultima riga di un log scritto da un processo andato in crash è molto spesso scritta a metà, e un convertitore che la saltasse in silenzio vi darebbe un file che sembra completo mentre manca il record che cercavate.
Il tetto gratuito è 100 MB e l’intero file viene analizzato in memoria prima che qualcosa venga scritto, quindi il limite pratico è la scheda del browser piuttosto che una quota. Decine di megabyte si convertono senza problemi.
Il limite sensato è comunque più basso di quello tecnico, perché lo scopo di questa destinazione è leggere. Nessuno legge trentamila record. Filtrate prima — jq -c 'select(.level=="error")' events.ndjson > errors.ndjson richiede un secondo e vi lascia con i quaranta record che intendevate davvero.
In questa scheda del browser, da JavaScript ordinario. Niente viene caricato, non c’è motore da scaricare prima e nessun account, e il pannello di rete durante una conversione è il modo per confermarlo.
Conta più per questa coppia che per la maggior parte. I file che le persone convertono qui sono export di errori e dump di incidenti, e portano ciò che era in corso quando qualcosa si è rotto: percorsi di richiesta, identificativi di sessione, occasionalmente un token in una query string che non doveva essere registrato.
| NDJSON | YAML | |
|---|---|---|
| Nome completo | Newline-Delimited JSON | YAML Ain't Markup Language |
| Estensione del file | .ndjson, .jsonl | .yaml, .yml |
| Tipo di media | application/x-ndjson | application/yaml |
| Prima pubblicazione | 2013 | 2001 |
| Specifica | — | YAML 1.2 |
| Licenza | Standard aperto | Standard aperto |
| Situazione attuale | Attuale | Attuale |
| Si apre nel browser | Nessun browser | Nessun browser |
| Valutato al suo posto | JSON, CSV | JSON, TOML |
Non si scarta nulla. NDJSON e YAML salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.
I programmi di sempre non coincidono: NDJSON si apre in jq e pandas, YAML in Visual Studio Code e yq, quindi chi riceve il risultato ha bisogno di uno del secondo gruppo.
YAML risale al 2001, descritto in YAML 1.2. Visual Studio Code e yq lo leggono.
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.
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.
No. YAML conserva lo stesso contenuto senza buttare via niente: il risultato è identico in qualità all’originale.
Non si scarta nulla. NDJSON e YAML salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.