§

Incolla il JSON o lo YAML che vuoi convertire.

Modalità
Indentazione
Opzioni
§

Output

yaml

Passare tra JSON e YAML è un'attività quotidiana per i team di piattaforma cloud-native italiani. Banca Sella ha costruito una piattaforma Kubernetes per i suoi servizi digitali, ENI ha migrato carichi critici verso i container, Vodafone Italia orchestra deployment K8s nei suoi data center, e l'Agid pubblica le specifiche OpenAPI dei servizi nazionali di interoperabilità — pagoPA, SPID, app IO — in formato YAML versionato sui repository GitHub di sviluppatori.italia.it. Le università italiane (Politecnico, La Sapienza, Bologna) usano Kubernetes per workload di ricerca con manifesti YAML revisionati prima dell'applicazione. Le pipeline GitHub Actions e i chart Helm pivotano continuamente tra YAML e JSON. Questo convertitore esegue l'andata e ritorno localmente, mantenendo i dati conformi al GDPR.

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:

  1. 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.
  2. JSON → YAML: JSON.parse valida 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 ---.
  3. YAML → JSON: jsyaml.loadAll analizza 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.
  4. 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.
  5. 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.mark di js-yaml così 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.loadAll riconosce 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 / *alias di YAML è gestito dallo schema predefinito di js-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, ConfigMap o HelmRelease in 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.yml di 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.json dalla documentazione autogenerata di un backend e convertirlo in openapi.yaml per 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.