Convertire JSON in YAML

Qui converti JSON 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.

  • Dove gira Nel tuo browser. Il file non viene mai caricato.
  • Senza perdita Non si butta via niente. YAML conserva esattamente ciò che JSON 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.

YAML è un superset di JSON, e nulla va perduto

Questa è l’unica conversione di questo gruppo di pagine in cui la risposta a «quanto mi costa» è davvero nulla. YAML 1.2, pubblicato nel 2009 e la versione che la specifica porta da allora, definisce JSON come un sottoinsieme : ogni documento JSON valido è già un YAML valido. La conversione riserializza lo stesso albero in uno stile diverso.

Questo rende il resto della pagina insolito. Non c’è un passo lossy di cui avvertire, nessun appiattimento, nessun tipo da approssimare. Quello che c’è invece è un insieme di domande su come il risultato sarà letto, e queste si rivelano contare più di qualsiasi perdita di dati farebbe.

La parola nuda «no» è il motivo per cui questa conversione merita un secondo sguardo

Lo scrittore segue YAML 1.2, sotto il quale no, yes, on e off sono stringhe ordinarie. Quindi un valore JSON "no" viene scritto come un no nudo, senza virgolette, e rileggere quel documento con un parser 1.2 restituisce la stringa da cui si era partiti. È il comportamento corretto e fa un round-trip perfetto.

YAML 1.1 non è d’accordo. Risolve quelle stesse parole a booleani, e PyYAML — che è ciò che usa Ansible, gran parte del tooling Python e innumerevoli script interni — è un lettore 1.1. Così un codice paese di due lettere, un campo di risposta, una colonna chiamata consent : il valore entra come la stringa no ed esce come false. Se uno strumento Python è a valle, si virgolettino quei valori a mano dopo la conversione. È una piccola modifica ed è il modo più probabile in cui questa conversione produca un file formalmente corretto che si comporta nel modo sbagliato.

Quali valori lo scrittore YAML mette tra virgolette, e perché

Le virgolette sono decise per valore, e solo dove la forma nuda verrebbe letta come qualcos’altro. La stringa "1.0" è virgolettata, perché senza virgolette è un numero. La stringa "null" è virgolettata, perché senza virgolette è il valore null. Una stringa che inizia con un cancelletto è virgolettata, perché un cancelletto nudo inizia un commento, e una stringa con spazi iniziali o finali è virgolettata, perché YAML altrimenti li eliminerebbe.

La regola è coerente ed è una regola 1.2, che è esattamente il punto della sezione precedente. Tutto ciò che lo scrittore virgoletta cambierebbe significato sotto YAML 1.2 ; le parole che lascia nude sono quelle che cambiano significato solo sotto 1.1. Una stringa a forma di data come 2024-01-01 è lasciata nuda per la stessa ragione, e un lettore 1.1 la trasforma in un timestamp.

Le stringhe multilinea smettono di essere illeggibili

Una stringa JSON non può contenere un a capo letterale, quindi uno script di shell, un certificato o un’istruzione SQL incorporati in un manifest JSON sono un’unica riga enorme con backslash-n al posto delle interruzioni. Rivedere una sua modifica non è davvero possibile.

Lo scrittore YAML emette quei valori come scalar a blocco : un carattere pipe, poi il testo su righe indentate proprie con le interruzioni di riga al loro posto. Uno script entrypoint di dodici righe diventa dodici righe nel file. Per chi converte perché il manifest deve essere rivisto da una persona, questo è di solito il singolo miglioramento più grande dell’output, ed è invisibile finché il file non ne contiene uno.

Gli array di oggetti diventano la forma lista che tutti riconoscono

Un array JSON di oggetti si converte nella lista con prefisso dash che ogni esempio di Kubernetes e GitHub Actions è scritto in : un trattino, poi la prima chiave sulla stessa riga e il resto indentato sotto. Containers, steps, volumes, jobs — tutti arrivano nella forma che la documentazione mostra.

Questo conta per la revisione più che per la correttezza, e la revisione è il motivo per cui il file esiste. Un revisore che scorre una lista di sei passi di deployment in YAML può vedere i confini tra di essi senza contare le parentesi, che è il motivo per cui l’ecosistema ha scelto il formato nonostante le sue trappole di indentazione.

Il commento che ora si può scrivere è il punto del file

JSON non porta commenti, il che segue dalla grammatica in RFC 8259 più che essere un caso dei parser — non c’è produzione per uno, quindi un parser conforme non ha nulla da accettare. YAML li porta ovunque una riga possa iniziare con un cancelletto. Convertire un manifest generato in YAML è molto spesso non una questione di sintassi — è fare del file un posto dove la ragione di un valore possa vivere accanto al valore.

Nell’output non ci sono commenti, perché l’input non ne aveva da dare. Aggiungerli è la prima modifica che vale la pena fare, e i più utili non sono mai descrizioni di cosa sia un campo. Si scriva perché il conteggio delle repliche è tre, a quale altro repository il tag dell’immagine deve corrispondere, e cosa si rompe se il timeout viene abbassato.

Cosa può esprimere YAML che questa conversione non produrrà mai

YAML ha ancore e alias, che permettono di definire un blocco una volta e riferirlo in tre posti, e ha più documenti in un file separati da tre trattini. Entrambi sono ampiamente usati — i file compose e i bundle Kubernetes vi fanno affidamento — e nessuno dei due può uscire da una sorgente JSON, perché JSON non ha modo di esprimere l’uno o l’altro.

Così il file convertito è corretto e piatto : tutto ciò che è ripetuto nel JSON è ripetuto nello YAML. Estrarre la ripetizione con un’ancora è una modifica manuale, e vale la pena farla solo dove la ripetizione è genuina. Un bundle di manifest separati concatenati in un array JSON è l’altro caso, e lì ciò che serve sono più documenti in un file, che è di nuovo una modifica più che una conversione.

L’ordine delle chiavi sopravvive, cosa che YAML non garantisce

Lo scrittore preserva l’ordine in cui le chiavi sono arrivate, quindi apiVersion, kind e metadata restano dove erano invece di essere ordinati. Né JSON né YAML definiscono l’ordine delle mappe come significativo, e molti strumenti riordinano liberamente, ma un manifest le cui chiavi sono state alfabetizzate è più difficile da leggere e produce un diff ampio senza motivo.

Questo vale la pena saperlo quando si confronta l’output con un file già nel repository. Se i due differiscono solo nell’ordinamento, la differenza viene da qualunque cosa abbia prodotto il JSON, non da questa conversione — rileggere una risorsa da un cluster, per esempio, restituisce i campi nell’ordine del server API invece che nell’ordine in cui li avete scritti.

Applicare lo YAML prima di fidarsi

Il controllo che costa meno è il dry run dello strumento stesso : kubectl apply con --dry-run=client, docker compose config, o il linter di workflow per un file Actions. Ognuno parsa il documento e riporta la forma che ha trovato, il che coglie una chiave fuori posto molto più velocemente che leggere il file.

Il controllo che coglie il problema delle virgolette è diverso e va fatto di proposito : si cerchino nel file convertito le occorrenze nude di yes, no, on, off e ogni data senza virgolette, e si decida per ognuna se un lettore YAML 1.1 la vedrà mai. Richiede un minuto ed è l’unica parte di questa conversione che un parser non segnalerà.

Niente di ciò che riguarda il JSON lascia la vostra macchina

La conversione gira in questa scheda. Il JSON è parsato dal parser stesso del browser e lo YAML è scritto da una libreria caricata su richiesta, quindi nessuna richiesta porta il documento da qualche parte, non c’è iscrizione e non c’è limite giornaliero, e il livello gratuito accetta fino a 100 MB — ben più di qualsiasi manifest.

Per chi legge è una preoccupazione pratica più che astratta. Un manifest estratto da un cluster in esecuzione contiene nomi host interni, percorsi di registro, nomi di service account e la forma dell’infrastruttura, e un discreto numero di organizzazioni tratta l’incollare quello in un convertitore web pubblico come un incidente. Qui non c’è nulla da incollare e nulla da inviare.

Come convertire JSON in YAML

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

JSON o YAML: cosa cambia

JSON a confronto con YAML
JSONYAML
Nome completoJavaScript Object NotationYAML Ain't Markup Language
Estensione del file.json.yaml, .yml
Tipo di mediaapplication/jsonapplication/yaml
Prima pubblicazione20012001
SpecificaRFC 8259YAML 1.2
LicenzaStandard apertoStandard aperto
Situazione attualeAttualeAttuale
Si apre nel browserTutti i browserNessun browser
Valutato al suo postoXML, NDJSONTOML

Che cosa resta

Non si scarta nulla. JSON 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.

Aprire il risultato

Nessun browser legge YAML. È il meno trasportabile dei due: meglio assicurarsi che chi lo riceve lo accetti prima di inviarlo.

Visual Studio Code legge sia JSON sia YAML, quindi puoi confrontare il risultato con l'originale senza un secondo programma.

A che cosa serve ciascun formato

JSON è stato pubblicato nel 2001. È descritto in RFC 8259, e vale la pena conoscerlo se il file deve sopravvivere allo strumento che lo ha scritto.

YAML risale al 2001, descritto in YAML 1.2. Visual Studio Code e yq lo leggono.

Da JSON a YAML: domande frequenti

Il mio file JSON 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 JSON in YAML è 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 JSON in YAML?

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

Un file YAML si apre nel browser?

Nessun browser legge YAML. È il meno trasportabile dei due: meglio assicurarsi che chi lo riceve lo accetti prima di inviarlo.

La conversione da JSON a YAML è senza perdita?

Non si scarta nulla. JSON 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.

Altro su questi formati