Da JSON a YAML
Convertitore online gratuito da JSON a YAML: trasforma istantaneamente JSON in configurazione YAML 1.2 standard, con indentazione personalizzabile e correzione intelligente degli errori di sintassi JSON, ideale per generare risorse Kubernetes, Docker Compose, GitHub Actions e altri file di configurazione YAML.
Raccomandazioni correlate
Cos'è YAML e perché convertire JSON in YAML?
YAML (YAML Ain't Markup Language, ovvero YAML non è un linguaggio di markup) è un formato di serializzazione dati pensato per essere leggibile e scrivibile dall'uomo. YAML 1.2 è la versione stabile attuale (yaml.org/spec/1.2.2), proposto da Clark Evans nel 2001, oggi usato nella configurazione di Kubernetes, Docker Compose, GitHub Actions, Ansible, CircleCI, Prometheus e praticamente tutti i principali strumenti DevOps. La filosofia di YAML privilegia la leggibilità rispetto alla sintesi, sacrificando la compattezza tipica del JSON in favore di una struttura a indentazione e commenti più adatta alla modifica umana.
JSON e YAML sono strettamente correlati (JSON è un sottoinsieme di YAML): convertire JSON in YAML è tecnicamente una semplice riformattazione sintattica, ma il valore pratico è enorme: ①leggibilità migliorata — YAML usa l'indentazione al posto di parentesi graffe e virgole e consente di omettere le virgolette attorno alle chiavi, aumentando notevolmente la leggibilità; ②supporto dei commenti — YAML supporta i commenti con #, mentre JSON standard non li prevede (anche se alcuni parser tolleranti li accettano); ③supporto multi-documento — YAML usa --- come separatore per includere più documenti in un unico file (Kubernetes può includere Deployment+Service+ConfigMap nello stesso yaml); ④riconoscimento automatico del tipo — YAML identifica numeri, booleani e null anche senza virgolette, mantenendo i file di configurazione più puliti.
YAML ha tre strutture dati di base: ①scalari (scalar) — singoli valori come stringhe, numeri, booleani, null; ②sequenze (sequence) — analoghe agli array JSON, indicate con -; ③mappature (mapping) — analoghe agli oggetti JSON, indicate con key: value. YAML offre anche strutture avanzate: ancore (&anchor) e riferimenti (*anchor) per il riuso di blocchi; stile a blocco (| mantiene gli a capo) e stile ripiegato (> converte gli a capo in spazi) per le stringhe multilinea; tag espliciti (!!str, !!int) per forzare il tipo. Queste caratteristiche rendono YAML più potente del JSON in scenari di configurazione complessi.
I motivi più comuni per convertire JSON in YAML sono: ①il progetto deve essere distribuito su Kubernetes ma la configurazione esistente è in JSON; ②il team decide di unificare la gestione di tutti i file di configurazione in YAML; ③è richiesto un payload YAML per l'integrazione con API di terze parti (OpenAPI, Swagger); ④configurazioni JSON esportate da API gateway o piattaforme CI/CD devono diventare YAML leggibili; ⑤mock data JSON da trasformare in YAML per fixture di test. Questo strumento copre tutti questi scenari.
Il processo di conversione è essenzialmente una rimappatura delle strutture dati: JSON.parse() trasforma il testo in un oggetto JavaScript (AST), e la funzione dump() di js-yaml attraversa ricorsivamente ogni nodo — stringhe, numeri, booleani e null vengono emessi direttamente, gli array diventano elenchi -, gli oggetti annidati diventano livelli di indentazione. L'intero processo avviene in locale, senza dipendenze esterne (a parte la libreria js-yaml), e il risultato è 100% compatibile con tutti i parser YAML standard.
Casi d'uso
- Preparazione di risorse Kubernetes: converti i template Helm o i file JSON generati dai tool CI/CD in YAML standard di tipo Deployment/Service
- Configurazione Docker Compose: converti JSON provenienti da docker-compose.json o da piattaforme di containerizzazione in un docker-compose.yml leggibile
- Pipeline GitHub Actions / GitLab CI: trasforma file JSON di script di automazione o template in YAML pronto per la pipeline
- Scrittura di Ansible Playbook: converti JSON di orchestrazione task nel formato YAML atteso da Ansible, per code review più agevoli
- Unificazione delle configurazioni dei microservizi: migra configurazioni JSON sparse in diversi microservizi in un repository YAML per versioning e audit
- Generazione di YAML da Swagger/OpenAPI: converti JSON Schema esportati da strumenti API in YAML conforme allo standard OpenAPI
- Apprendimento della sintassi YAML: hai una struttura JSON e vuoi vedere visivamente come YAML rappresenta oggetti annidati, array e valori speciali
- Confronto e conversione di configurazioni: passa rapidamente tra JSON e YAML per confrontare i formati e scegliere il linguaggio di configurazione più adatto al progetto
Come utilizzare
- Incolla il contenuto JSON nell'editor di sinistra, oppure clicca il pulsante di upload per selezionare un file .json / .txt, o clicca "Esempio" per caricare un preset
- Lo strumento converte automaticamente in tempo reale secondo YAML 1.2 e mostra subito il risultato a destra; dal menu a tendina puoi passare tra 2 e 4 spazi di indentazione
- Se il JSON contiene errori di sintassi (virgole finali, apici singoli, commenti, ecc.), in basso apparirà il pulsante "Correggi JSON" che li risolve automaticamente con un clic
- Per escape Unicode o delle stringhe, usa i pulsanti "Cinese ↔ Unicode" ed "Escape / unescape" nella barra inferiore per eseguire la conversione con un clic
- Quando il risultato è soddisfacente, clicca "Copia" per copiare il contenuto YAML, oppure "Download" per salvarlo come file output.yaml pronto per il progetto
Funzionalità
- Output conforme a YAML 1.2: rispetta la specifica ufficiale YAML 1.2 e può essere usato direttamente con Kubernetes, Docker Compose, GitHub Actions, Ansible e altri strumenti diffusi
- Controllo dell'indentazione personalizzato: supporta il passaggio tra 2 e 4 spazi per adattarsi allo stile del codice di qualsiasi progetto (YAML raccomanda ufficialmente 2 spazi)
- Correzione intelligente del JSON: motore tryFixJSON integrato che rileva e corregge automaticamente errori comuni del JSON come virgole finali, apici singoli e commenti prima della conversione
- Conversione Unicode bidirezionale: convergi i caratteri cinesi in sequenze di escape \uXXXX Unicode o ripristinali dal formato Unicode, utile per scenari di internazionalizzazione
- Escape / unescape delle stringhe: aggiunge con un clic il backslash escape a virgolette, backslash e a capo nelle stringhe JSON, oppure ripristina le stringhe con escape
- Formattazione e compressione JSON: l'editor sinistro può formattare il JSON in una versione indentata leggibile o comprimerlo in una versione minimizzata a riga singola
- Modifica bidirezionale in tempo reale: incolla JSON a sinistra e visualizza subito il risultato YAML a destra, la conversione è automatica senza cliccare pulsanti
- Caricamento e download di file: supporta file .json/.txt, scarica il risultato come config.yaml o output.yaml con un clic
- Scorciatoie da tastiera: Shift+Cmd/Ctrl+F formatta, C comprimi, U Unicode escape, Z annulla, / escape, . unescape, O apri, D scarica, K svuota
- Pannelli trascinabili e cronologia: i pannelli sinistra/destra su PC possono essere ridimensionati trascinando, vengono salvate automaticamente le ultime 200 conversioni per il ripristino
- Vai alla formattazione JSON: dopo la conversione passa con un clic allo strumento di formattazione JSON per abbellire, convalidare o comprimere i dati sorgente
- Elaborazione locale in puro front-end: tutte le operazioni di parsing, conversione ed escape vengono eseguite in JavaScript nel browser, incluse configurazioni sensibili non vengono inviate al server
Domande frequenti
Come si converte JSON in formato YAML?
Incolla il contenuto JSON nell'editor di sinistra: lo strumento lo convertirà automaticamente in un formato leggibile secondo la specifica YAML 1.2 — le coppie chiave-valore diventano key: value, gli oggetti annidati sono rappresentati dall'indentazione, gli array diventano elenchi con sintassi `- item`. Al termine puoi copiare o scaricare il risultato come file .yaml. Se il JSON contiene errori di sintassi (virgole finali, apici singoli, commenti, ecc.), lo strumento proverà a correggerli automaticamente prima della conversione.
Quali sono gli scenari ideali per YAML e JSON?
YAML è ideale per scenari di configurazione leggibili dall'uomo: risorse Kubernetes, Docker Compose, GitHub Actions, Ansible Playbook, pipeline CI/CD. JSON è ideale per il parsing automatico e lo scambio di dati: richieste e risposte di API REST, comunicazione tra microservizi, trasferimento dati front-end/back-end. Regola rapida: YAML per le configurazioni, JSON per i dati. Questo strumento supporta anche la conversione inversa da YAML a JSON.
Dopo la conversione da JSON a YAML, indentazione a 2 o 4 spazi?
YAML raccomanda ufficialmente 2 spazi di indentazione (coerente con lo stile Python), che è anche l'impostazione predefinita di Kubernetes, Docker Compose, GitHub Actions e altri strumenti diffusi. Alcuni progetti però (ad esempio vecchi playbook Ansible o lo stile interno Google) usano 4 spazi. Questo strumento permette di passare liberamente tra 2 e 4 spazi tramite il menu a tendina in alto a destra nell'area di output, senza dover riconvertire.
Lo YAML generato può essere usato direttamente con Kubernetes?
Sì. Questo strumento segue rigorosamente la specifica ufficiale YAML 1.2 e l'output è compatibile con il parser YAML di Kubernetes (kubectl apply). Puoi salvare lo YAML generato come deployment.yaml, service.yaml e applicarlo con kubectl apply -f. Attenzione: YAML è molto sensibile all'indentazione, evita di introdurre spazi extra o tabulazioni durante la copia.
Supporta la generazione di YAML multi-documento (separato da ---)?
La versione attuale è ottimizzata per la conversione di documenti singoli da JSON a YAML. Se il tuo JSON è un array di più oggetti indipendenti, il risultato verrà emesso come lista. Per ottenere un YAML multi-documento (con --- prima di ogni oggetto), aggiungi manualmente il separatore --- davanti a ciascun oggetto, oppure usa lo strumento di formattazione YAML del sito per elaborarlo ulteriormente.
I caratteri cinesi / speciali nel JSON verranno corrotti?
No. Questo strumento supporta pienamente la codifica UTF-8, inclusi cinese, giapponese, coreano, emoji e tutti i caratteri Unicode. Se dopo la conversione devi trasformare il testo in sequenze \uXXXX (ad esempio per incorporarlo in un literal JavaScript), usa il pulsante "Cinese → Unicode" in basso; per l'operazione inversa usa "Unicode → Cinese".
Come gestire le virgolette doppie e gli a capo nelle stringhe JSON?
YAML supporta diversi stili di stringa: ① senza virgolette (per stringhe semplici senza caratteri speciali); ② tra virgolette doppie (supporta \n, \t, ecc.); ③ tra apici singoli (literalmente, senza escape); ④ stile blocco con | (preserva gli a capo); ⑤ stile ripiegato con > (a capo convertiti in spazi). Lo strumento emette di default lo stile con virgolette doppie; se la stringa JSON contiene a capo, YAML li trasformerà in escape \n. In basso sono disponibili i pulsanti "Escape / unescape" per i casi particolari.
Dopo la conversione da JSON a YAML tutti i valori sono diventati stringhe?
Per impostazione predefinita lo strumento riconosce e preserva i tipi originali del JSON: i numeri restano numeri YAML (senza virgolette), i booleani diventano true/false, null diventa null o ~. Se invece desideri che tutti i valori siano stringhe (ad esempio perché un sistema di configurazione lo richiede), puoi aggiungere manualmente le virgolette dopo la conversione oppure racchiudere tutti i valori tra virgolette nel JSON prima di convertirlo.
La conversione avviene nel browser locale, i file di configurazione vengono caricati?
No. Tutte le operazioni di parsing JSON, generazione YAML, escape delle stringhe, conversione Unicode e correzione JSON vengono eseguite localmente nel motore JavaScript del tuo browser, senza alcuna trasmissione verso server, e funzionano anche offline. JSON contenenti password di database, chiavi API o Secret Kubernetes possono essere convertiti in tutta sicurezza.
Risoluzione dei problemi
Errore JSON "Unexpected token", cosa fare?
Si tratta di un errore di sintassi JSON. Cause comuni: ①virgola finale (trailing comma) come {"a":1,}; ②apici singoli al posto delle virgolette doppie, ad es. {'a':1}; ③chiavi senza virgolette doppie, ad es. {a:1}; ④commenti // o /* */. In basso trovi il pulsante "Correggi JSON" che proverà automaticamente ad aggiungere le virgolette mancanti, rimuovere le virgole finali e i commenti. Dopo la correzione puoi riconvertire.
kubectl apply restituisce "yaml: invalid character"?
Di solito è un errore di indentazione. YAML richiede rigorosamente l'indentazione con spazi: mescolare tabulazioni causa il fallimento del parsing. Verifica: ①che tutta l'indentazione sia fatta di spazi (non tab); ②che lo stesso livello usi lo stesso numero di spazi (2 o 4); ③che l'indentazione rispetti i livelli di nidificazione. L'output di questo strumento usa solo spazi, ma se incolli manualmente potresti introdurre tabulazioni.
Gli a capo nella stringa YAML sono diventati \n, cosa fare?
Di default i caratteri di a capo (\n) presenti nelle stringhe JSON vengono convertiti in escape \n in YAML. Se vuoi mantenere gli a capo reali (ad esempio per il campo command multi-linea di Docker Compose o stringhe di configurazione multi-linea), modifica manualmente lo stile in blocco con |, ad esempio: description: |\n prima riga\n seconda riga. Oppure usa il pulsante "Unescape" per trasformare prima i \n del JSON in a capo reali, quindi converti.
I valori null nello YAML sono diventati ~, perché?
YAML usa ~ o null per rappresentare un valore nullo, sono equivalenti. Se il tuo strumento non riconosce ~, puoi sostituirlo manualmente con null. Attiva l'opzione di output che forza null esplicito al posto di ~. Nota che in YAML 1.1 NO/On/Off vengono interpretati come booleani false (problema Norway): YAML 1.2 ha corretto il bug e questo strumento è conforme a 1.2.
Il testo cinese in YAML appare come escape \uXXXX?
Di default lo strumento emette il testo cinese in UTF-8 nativo (senza escape). Se vedi \uXXX è perché: ①il JSON sorgente conteneva già escape Unicode; ②hai cliccato il pulsante "Cinese → Unicode". Usa il pulsante "Unicode → Cinese" per ripristinare, oppure sostituisci direttamente le sequenze \uXXXX con i caratteri cinesi reali nel JSON sorgente.
File di grandi dimensioni causano rallentamenti del browser?
Lo strumento ottimizza la conversione in tempo reale (debounce 500 ms), ma file molto grandi (>1 MB, centinaia di migliaia di righe) possono comunque mettere sotto pressione il browser. Suggerimenti: ①usa prima lo strumento di formattazione JSON per verificarne la validità; ②assicurati che sia un unico JSON valido e non più JSON concatenati; ③per file enormi (10 MB+) è preferibile usare strumenti da riga di comando come yq o kubectl convert; ④se il browser si blocca, chiudi le tab in eccesso per liberare memoria e riprova.
Glossario
- YAML
- YAML Ain't Markup Language (acronimo ricorsivo), un formato di serializzazione dati leggibile dall'uomo, divenuto lo standard di fatto per la configurazione di strumenti DevOps come Kubernetes, Docker Compose e Ansible.
- Indentazione (Indentation)
- YAML usa l'indentazione (solo spazi, mai tabulazioni) per rappresentare la gerarchia; errori di indentazione causano il fallimento del parsing o cambiano il significato della configurazione: è la trappola più comune di YAML.
- Sequenza (Sequence)
- Rappresentazione di array in YAML, ogni elemento è indicato con `- item`, equivalente agli array di JSON.
- Mappatura (Mapping)
- Rappresentazione di oggetti in YAML, ogni coppia chiave-valore è indicata con `key: value`, equivalente agli oggetti di JSON.
- Scalare a blocco (Block Scalar |)
- Stile YAML per stringhe multilinea, identificato dal simbolo |, che preserva tutti gli a capo e le indentazioni, equivalente a un heredoc.
- Scalare ripiegato (Folded Scalar >)
- Stile YAML per stringhe multilinea, identificato dal simbolo >: un singolo a capo viene convertito in uno spazio, due a capo consecutivi vengono mantenuti come separatore di paragrafo.
- Ancore e riferimenti (Anchor & Reference)
- YAML definisce le ancore con &name e vi fa riferimento con *name, evitando ripetizioni: tipico di K8s in cui lo stesso Secret è referenziato in più punti.
- YAML 1.2
- Specifica stabile attuale di YAML (pubblicata nel 2009, con piccole revisioni nel 2021); questo strumento la segue rigorosamente (yaml.org/spec/1.2.2).
- YAML multi-documento (Multi-document)
- YAML supporta più documenti in un unico file, separati dal delimitatore ---; un singolo file yaml per Kubernetes può contenere più risorse come Deployment, Service e ConfigMap.
- YAML per Kubernetes
- Formato YAML dei manifest Kubernetes: deve contenere i quattro campi obbligatori apiVersion, kind, metadata e spec, ed è lo standard di fatto per il deployment su K8s.
- Problema Norway (YAML 1.1)
- La specifica YAML 1.1 interpretava NO, On, Off come booleani false, causando errori di parsing sui nomi di paese; YAML 1.2 ha corretto il problema e questo strumento produce output conforme a 1.2.
- Docker Compose
- File di configurazione YAML dell'orchestratore multi-container di Docker, che definisce sezioni come services, networks e volumes: è lo standard di fatto per il deployment containerizzato.
Mappatura tra tipi JSON e sintassi YAML
Questo strumento converte i tipi JSON in tipi YAML seguendo queste regole:
| Tipo JSON | Sintassi YAML | Note |
|---|---|---|
| string | name: "Alice" | YAML di default senza virgolette; servono virgolette doppie per caratteri speciali |
| integer | port: 8080 | YAML riconosce automaticamente i numeri, senza virgolette |
| float | ratio: 3.14 | I float seguono la stessa regola degli interi, YAML li riconosce automaticamente |
| boolean | enabled: true | YAML accetta solo true/false minuscoli; YAML 1.1 supporta anche yes/no |
| null | value: null oppure value: ~ | YAML usa null o la tilde per rappresentare un valore nullo |
| array | - item1\n- item2 | YAML usa - all'inizio di ogni riga per gli elementi |
| object | key:\n sub: value | Oggetti con key: value, nidificazione espressa tramite indentazione |
| object array | - name: a\n- name: b | Gli array di oggetti usano - seguito dalle coppie chiave-valore |
Confronto degli stili di stringa YAML
YAML supporta 6 stili di stringa tra cui scegliere in base alle esigenze:
| Stile | Esempio di sintassi | Caso d'uso |
|---|---|---|
Senza virgolette | name: Alice | Stringhe semplici, lo stile più usato |
Virgolette doppie | name: "Alice" | Caratteri speciali, supporta escape come \n |
Apici singoli | name: 'Alice' | Stringhe letterali, senza escape |
Stile a blocco | bio: |\n line1\n line2 | Preserva tutti gli a capo e le indentazioni (heredoc) |
Stile ripiegato | bio: >\n line1\n line2 | A capo singolo convertito in spazio, doppio a capo come separatore |
Tag esplicito | value: !!str 123 | Forza il tipo, sovrascrive l'inferenza predefinita |
Esempi di conversione da JSON a YAML
Output YAML corrispondente a strutture JSON complesse:
| Struttura | Esempio |
|---|---|
| Input JSON | {"name": "app", "port": 8080} |
| Output YAML | name: app
port: 8080 |
| Input JSON | {"server": {"host": "0.0.0.0", "port": 443}} |
| Output YAML | server:
host: 0.0.0.0
port: 443 |
| Input JSON | {"hosts": [{"ip": "10.0.0.1"}, {"ip": "10.0.0.2"}]} |
| Output YAML | hosts:
- ip: 10.0.0.1
- ip: 10.0.0.2 |
| Input JSON | {"spec": {"replicas": 3, "image": "nginx:1.25"}} |
| Output YAML | spec:
replicas: 3
image: nginx:1.25 |
Privacy & Security
Tutte le operazioni di parsing JSON, generazione YAML, escape delle stringhe, conversione Unicode, correzione intelligente del JSON e lettura dei file vengono eseguite localmente nel motore JavaScript del tuo browser. Il contenuto del JSON e lo YAML generato non vengono inviati a nessun server via rete, né registrati o analizzati. JSON contenenti password di database, chiavi API o Secret Kubernetes possono essere convertiti in tutta sicurezza. La cronologia locale viene salvata solo nella localStorage del tuo browser e può essere cancellata chiudendo il browser o svuotando la cache.
Authoritative References
- yaml.orgSpecifica ufficiale YAML 1.2
- yaml.orgFAQ ufficiale YAML
- WikipediaYAML - Wikipedia
- KubernetesTutorial ufficiale Kubernetes YAML
- DockerDocumentazione ufficiale Docker Compose
- Compressione JSON
- CSV in JSON
- JSON to CSV
- JSON Diff
- JSON Escape / Unescape
- Appiattimento JSON
- Formattatore JSON
- Generatore JSON
- Query JSONPath
- Unire JSON
- Riparare JSON
- Validatore di Schema JSON
- Ordinare JSON
- JSON Stringify
- JSON in HTML
- JSON in Java
- JSON to Markdown
- JSON in SQL
- JSON in TOML
- JSON in TypeScript
- XML in JSON
- JSON in XML
- YAML in JSON
- Da JSON a YAML
- JSON in Python
- JSON in Go
- JSON in Rust
- JSON in Swift
- JSON a C#
- JSON a C++
- JSON to PHP