Conversione da YAML a JSON

Converte in JSON i dati in formato YAML. Permette di trasformare all'istante nel navigatore le strutture scritte in YAML — manifesti di Kubernetes, file di composizione dei contenitori, configurazioni dell'integrazione continua — in una forma trattabile con jq e con gli altri strumenti dedicati al JSON.

Che cos'è la conversione da YAML a JSON

La conversione da YAML a JSON prende una configurazione scritta nel formato YAML, pensato per essere letto e modificato agevolmente dalle persone — manifesti di Kubernetes, file docker-compose.yml, definizioni di flussi di lavoro di GitHub Actions — e la trasforma, direttamente nel navigatore, in JSON, un formato che i programmi possono elaborare meccanicamente. Questo strumento riconosce le mappature (chiave: valore), le sequenze a blocchi (- elemento), le sequenze in linea ([a, b, c]), le mappature in linea ({a: 1, b: 2}), gli scalari fondamentali come stringhe, numeri interi, numeri decimali, valori booleani e nulli, oltre ai commenti introdotti da #. Finché il vostro YAML si limita alle scritture di uso comune nei file di configurazione di tutti i giorni, potete incollarlo e ottenere subito una rappresentazione JSON funzionante.

L'analisi è affidata a un parser open source (yaml) conforme alla specifica YAML 1.2. Ancore (&) e alias (*) vengono sostituiti dal valore a cui fanno riferimento, e gli scalari a blocchi scritti con | o > per le stringhe su più righe vengono convertiti esattamente come stabilisce la specifica. I documenti multipli separati da --- vengono prodotti come array JSON con un valore per documento (unirli in un solo oggetto farebbe sovrascrivere le chiavi uguali). Le chiavi duplicate allo stesso livello e gli altri errori di sintassi vengono segnalati con il numero di riga. Tutta l'elaborazione avviene nel browser e nulla di ciò che inserite viene inviato a un server esterno.

Come usare il convertitore da YAML a JSON

  1. Incollate il vostro YAML Incollate lo YAML da convertire nella casella di immissione a sinistra. Se non avete un file a portata di mano, cliccate su "Carica un esempio" per provare prima con un esempio funzionante.
  2. Controllate il JSON risultante Il risultato in JSON compare a destra non appena digitate o incollate il testo. Se l'immissione presenta un problema di sintassi, al suo posto viene mostrato un messaggio che ne spiega la probabile causa.
  3. Attivate o disattivate la visualizzazione formattata Attivate "Mostra formattato" per ottenere un layout indentato e facile da leggere, oppure disattivatelo per ridurre tutto a un'unica riga senza andare a capo, a seconda di dove intendete incollare il risultato.
  4. Copiate o scaricate il risultato Usate il pulsante copia per inviare il JSON direttamente negli appunti, oppure il pulsante scarica per salvarlo come file .json a sé stante da riutilizzare in seguito.

Consigli per sfruttarlo al meglio

  • Incollando senz'altro un file di configurazione in YAML — un manifesto di Kubernetes, un file di composizione dei contenitori — se ne visualizza la struttura come JSON, trattabile poi con jq e con gli altri strumenti a riga di comando dedicati al JSON.
  • I valori che cominciano con uno zero, come codici postali e numeri di telefono, se scritti senza virgolette sono interpretati come numeri e perdono lo zero iniziale: racchiudete sempre fra virgolette ciò che deve restare testo.
  • Gli YAML che raccolgono più risorse in un file con ---, come avviene spesso con Kubernetes, diventano un array JSON con un valore per documento. In jq trattatelo come array, per esempio con .[0] o .[] | .kind.
  • Togliendo la spunta alla visualizzazione formattata si ottiene un JSON su una sola riga, senza andate a capo: comodo quando dovete incollarlo nel corpo della richiesta di un'interfaccia.

Quando è utile la conversione da YAML a JSON

Interrogare un manifesto di Kubernetes con jq

I manifesti possono facilmente arrivare a diverse centinaia di righe. Convertitene uno in JSON e passatelo a jq: un percorso come .spec.containers[].image estrae all'istante esattamente il valore che vi serve.

Passare docker-compose.yml a uno script

Se uno script o un'automazione che state scrivendo non include già un analizzatore YAML, convertire prima il file compose in JSON permette di leggerlo con un semplice analizzatore JSON integrato.

Visualizzare la struttura di una configurazione CI

Incollate un file di flusso di lavoro di GitHub Actions o GitLab CI per vederne la struttura resa in JSON: le relazioni annidate, facili da perdere di vista guardando solo i rientri, diventano percorsi di chiavi espliciti.

Prepararsi a usare uno strumento o un'interfaccia che accetta solo YAML

Anche se la vostra fonte di dati è in JSON, convertire prima un file YAML esistente può aiutarvi a capire esattamente come è organizzata la sua struttura prima di scriverci del codice contro.

Proseguire con altri strumenti dedicati al JSON

Incollate il JSON convertito direttamente in JSON verso definizioni di tipo TypeScript o nel formattatore JSON per continuare a elaborarlo.

Glossario dello YAML

YAML
Un acronimo ricorsivo di "YAML Ain't Markup Language". Rappresenta le strutture annidate tramite i rientri anziché con le parentesi, e ammette i commenti e virgolette per lo più facoltative: per questo è il formato preferito per i file di configurazione che le persone modificano a mano.
Mappatura
Una struttura YAML che associa chiavi a valori con la sintassi chiave: valore. Corrisponde a un oggetto JSON, e le righe con lo stesso livello di rientro vengono trattate come chiavi dello stesso livello della struttura.
Sequenza a blocchi
Un array YAML scritto come una serie di righe che iniziano ciascuna con un trattino seguito da uno spazio, come - elemento. Corrisponde a un array JSON; lo strumento legge una serie di righe - allo stesso livello di rientro come un unico array.
Stile in linea
Un modo di scrivere una sequenza o una mappatura su un'unica riga senza usare lo stile a blocchi basato sui rientri, come [a, b, c] oppure {a: 1, b: 2}. Assomiglia molto di più al modo in cui si scrivono array e oggetti JSON.
Ancore e alias
Funzione di YAML che assegna un nome a un valore con &name e vi fa riferimento altrove con *name, così da riutilizzare le stesse impostazioni. Lo strumento sostituisce ogni alias con il valore a cui fa riferimento nell'output JSON.
Scalare a blocchi
Modo di scrivere una stringa su più righe che inizia con | (mantiene gli a capo) o > (trasforma gli a capo in spazi). Si usa spesso per incorporare script di shell o descrizioni lunghe, e lo strumento la converte in una stringa JSON che contiene \n per ogni a capo.
Flusso di documenti
Meccanismo per includere più documenti in un unico file YAML, separati da ---. Si usa per esempio per raccogliere più risorse Kubernetes in un file, e lo strumento lo produce come array JSON con un valore per documento.

Domande frequenti

Quando volete cercare o elaborare il contenuto di un manifesto di Kubernetes o di una configurazione dell'integrazione continua con strumenti a riga di comando dedicati al JSON, come jq, oppure quando dovete passare le impostazioni a un'interfaccia o a uno script che non accetta YAML: in questi casi conviene convertirle prima in JSON.

Sì. Lo strumento usa un parser conforme alla specifica YAML 1.2, quindi ogni alias viene sostituito dal valore a cui fa riferimento nell'output JSON. Anche le chiavi di unione (<<: *name) usate per esempio nei file di Docker Compose vengono espanse. Sono supportati anche i flussi con più documenti e gli scalari a blocchi con | o >.

La causa più comune è un'indentazione sbagliata: indentare con le tabulazioni, oppure elementi dello stesso livello con un numero di spazi diverso. Anche scrivere due volte la stessa chiave allo stesso livello è un errore, perché YAML richiede chiavi univoche. Il messaggio di errore indica il numero della riga in cui è stato trovato il problema: controllate quella riga e la precedente.

Questo strumento opera in un solo verso, da YAML a JSON. Per formattare il JSON in sé o per formattare e convalidare lo YAML, usate gli altri strumenti di formattazione presenti sul sito.
Tool-kun

A proposito — perché le configurazioni si scrivono in YAML mentre gli strumenti chiedono JSON

YAML ammette i commenti e riduce al minimo le virgolette: per questa leggibilità è largamente usato nei file di configurazione che una persona modifica direttamente, dai manifesti di Kubernetes ai file di composizione dei contenitori, dalle configurazioni di GitHub Actions ai copioni degli strumenti di automazione. JSON, invece, ha una specifica semplice e poco ambigua, facile da elaborare meccanicamente, e si è affermato come formato di scambio delle interfacce e come ingresso di strumenti a riga di comando come jq.

La conversione da YAML a JSON colma proprio questo divario fra ciò che le persone scrivono e ciò che gli strumenti chiedono. I manifesti di Kubernetes, in particolare, possono superare le centinaia di righe e cercarvi un valore con grep ha i suoi limiti. Convertendoli una volta in JSON e interrogandoli con jq, si estrae in un istante soltanto ciò che serve indicando un percorso come .spec.containers[].image.

La specifica YAML (YAML 1.2) è però molto ampia e comprende molte funzioni avanzate, come il riutilizzo dei valori con ancore e alias, i flussi con più documenti e gli scalari a blocchi per le stringhe su più righe. Un parser semplificato scritto in proprio sbaglia facilmente i valori proprio su queste funzioni e sui dettagli delle sequenze di escape, perciò lo strumento analizza l'input con un parser open source conforme alla specifica e produce il JSON esattamente come essa lo definisce.