Che cos'è la conversione JSON ↔ YAML?
JSON (JavaScript Object Notation, RFC 8259) è un formato testuale rigoroso delimitato da parentesi graffe per dati strutturati; YAML (YAML Ain't Markup Language, versione 1.2) è un sovrainsieme di JSON che utilizza indentazione, ritorni a capo e sintassi leggibile per lo stesso modello di valori. Convertire tra i due ti permette di alternare la stessa configurazione tra una forma adatta alle macchine (JSON per API, validazione di schemi, trasformazioni programmatiche) e una forma adatta alle persone (YAML per code review, manifesti Kubernetes, workflow di GitHub Actions) senza riscrivere una sola chiave.
Come funziona la conversione JSON ↔ YAML?
Ogni conversione viene eseguita localmente nel tuo browser utilizzando la libreria js-yaml inclusa (MIT, versione 4.1.0). I passaggi principali sono:
- Il selettore di modalità (Rilevamento automatico / JSON → YAML / YAML → JSON) decide quale pipeline viene eseguita. In modalità Rilevamento automatico, il primo carattere non-spazio dell'input sceglie la direzione —
{o[significa JSON; qualsiasi altra cosa significa YAML. - JSON → YAML:
JSON.parsevalida l'input e produce un valore JavaScript;jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false })scrive la forma YAML 1.2. Con Multi-documento attivo, un array di input viene riversato un elemento per documento e unito con separatori---. - YAML → JSON:
jsyaml.loadAllanalizza ogni documento dell'input (gestendo automaticamente i separatori---) in un array; gli input a documento singolo vengono spacchettati così l'output JSON è il documento stesso e non un array di un elemento. - L'indentazione (2 o 4 spazi) e la stampa elegante sono configurabili. Con la stampa elegante disattivata si emette JSON minificato tramite
JSON.stringify(value)senza spazi bianchi. - L'output viene scritto nell'area di testo in sola lettura. In caso di errori di analisi YAML, il messaggio di errore include la riga e la colonna (indicizzate da 1) riportate da
e.markdijs-yamlcosì puoi saltare direttamente al bug.
Perché convertire JSON e YAML con questo strumento?
- Privacy: ogni passaggio di analisi, trasformazione ed emissione avviene nel tuo browser. I dati — inclusi i secret di Kubernetes, i JWT firmati e le configurazioni proprietarie — non raggiungono mai i nostri server.
- YAML multi-documento:
jsyaml.loadAllriconosce i separatori---e restituisce un array di documenti, che il convertitore spacchetta nei casi a singolo documento o preserva come array JSON nei casi multi-documento. - Anchor e alias risolti: il meccanismo
&anchor/*aliasdi YAML è gestito dallo schema predefinito dijs-yaml. Un valore definito una volta e referenziato due volte fa andata e ritorno verso un oggetto JSON dove tutti i riferimenti contengono valori uguali. - Nessun CDN, nessuna telemetria: la libreria
js-yaml.min.jsè servita dalla stessa origine della pagina, quindi lo strumento funziona offline, dietro proxy aziendali e in ambienti air-gapped.
Quali sono le applicazioni comuni della conversione JSON ↔ YAML?
Pivotare tra JSON e YAML è ricorrente in DevOps, ingegneria di piattaforma e tooling delle API:
- Manifesti Kubernetes: convertire uno YAML
Deployment,ConfigMapoHelmReleasein JSON così un validatore interno di policy (Joi, Ajv, OPA Rego) può effettuare il lint programmaticamente, poi tornare a YAML per l'apply sul cluster. - Workflow CI/CD: far passare un
workflow.ymldi GitHub Actions per JSON in modo che un generatore di codice riscriva la matrice o le dipendenze tra job, e poi emettere lo YAML ripulito per la PR. - Specifiche OpenAPI: incollare un
openapi.jsondalla documentazione autogenerata di un backend e convertirlo inopenapi.yamlper la referenza editata da umani versionata nel repository.
Come si presenta un esempio di andata e ritorno JSON ↔ YAML?
Incollando {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} e premendo CONVERTI in modalità JSON → YAML si producono otto righe di YAML indentato con apiVersion: apps/v1 sulla prima riga. Reinserendo quello YAML in modalità YAML → JSON con la stampa elegante attiva si riottiene l'oggetto originale byte per byte dopo un JSON.stringify(value, null, 2) stabile, con l'ordine delle chiavi preservato perché lo schema predefinito di js-yaml rispetta l'ordine di inserimento in entrambe le direzioni.
Questo convertitore JSON ↔ YAML viene eseguito interamente nel mio browser?
Sì. Ogni passaggio di analisi, trasformazione ed emissione viene eseguito localmente come JavaScript all'interno della tua scheda del browser. La libreria js-yaml inclusa viene servita dalla stessa origine della pagina — niente CDN, niente fetch, niente XMLHttpRequest, niente navigator.sendBeacon sull'input. Lo strumento funziona anche offline una volta caricata la pagina, perché è un bundle statico HTML/CSS/JS con la libreria vendor copiata accanto. I secret Kubernetes, i payload JWT, gli YAML CloudFormation firmati e le configurazioni proprietarie restano sul tuo dispositivo.
Come gestisce il convertitore lo YAML multi-documento?
YAML supporta più documenti in un unico flusso separati da righe contenenti solo ---. In YAML → JSON il convertitore chiama jsyaml.loadAll, che restituisce ogni documento come valore JavaScript. Se viene trovato esattamente un documento, l'output JSON è direttamente quel documento; se ne vengono trovati due o più, l'output JSON è un array. In JSON → YAML, quando l'input è un array JSON E l'interruttore Multi-documento è attivo, ogni elemento dell'array viene emesso come proprio documento con separatori --- in mezzo — utile per generare un bundle compatibile con kubectl apply a partire da un array JSON di risorse.
Gli anchor e gli alias YAML sono supportati?
Sì — le definizioni &anchor e i riferimenti *alias vengono risolti dallo schema predefinito di js-yaml durante il caricamento. Un input YAML come defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d viene analizzato in un oggetto JSON dove sia job_a sia job_b contengono retries: 3, timeout: 30. La chiave di merge << (un'estensione YAML 1.1 che js-yaml ancora onora) è anch'essa supportata sullo schema predefinito.
I commenti YAML sono preservati nella conversione verso JSON e ritorno?
No — js-yaml rimuove i commenti durante l'analisi, quindi un'andata e ritorno YAML → JSON → YAML perderà ogni riga prefissata con #. È una limitazione nota del modello load/dump; se la preservazione dei commenti è critica, utilizza una libreria che ne tenga conto come il pacchetto npm yaml (che offre una API CST + AST progettata per preservare i trivia), invece di js-yaml. Per la maggior parte dei flussi di conversione delle configurazioni il compromesso è accettabile: lo YAML al ritorno mantiene tutte le chiavi, i valori, gli anchor e gli alias, semplicemente senza i commenti scritti dagli umani.
Cosa accade ai tag YAML personalizzati?
Il convertitore utilizza il DEFAULT_SCHEMA di js-yaml, che riconosce !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary e !!timestamp — ogni tag dei core e JSON schema di YAML 1.2. I tag personalizzati o specifici di un'applicazione (ad es. !Ref in CloudFormation, !vault in Ansible) non vengono riconosciuti e affiorano come un errore chiaro che cita il tag non supportato. Per CloudFormation in particolare, usa il flusso aws cloudformation package + --output-template-file per espandere i tag personalizzati prima di incollare in questo convertitore.
Questo convertitore JSON ↔ YAML viene fornito con js-yaml@4.1.0 incluso dalla stessa origine, supporta flussi multi-documento e anchor/alias di serie, e segnala errori di analisi YAML con riga e colonna per permetterti di correggere la fonte. Nessun upload, nessuna CDN, nessuna telemetria — ogni byte resta nel tuo browser.