Vai al contenuto
Case Converter Online
it

Convertitore da JSON a YAML

Incolla del JSON per ottenere YAML pulito, oppure cambia direzione per trasformare lo YAML in JSON. La conversione avviene nel tuo browser mentre scrivi.

Incolla il JSON o premi Esempio. La conversione avviene nel tuo browser.

JSON e YAML: stessi dati, due stili

Per convertire da JSON a YAML conviene sapere che i due formati descrivono le stesse cose: oggetti (in YAML si chiamano mappature), liste, stringhe, numeri, booleani e null. Il JSON usa graffe, parentesi quadre, virgolette e virgole. Lo YAML usa rientri e trattini, il che lo rende più corto e più facile da leggere e modificare a mano. Per questo strumenti come Kubernetes, Docker Compose, GitHub Actions e Ansible usano lo YAML per la configurazione, mentre le API di solito parlano JSON.

Capita spesso di dover passare dall’uno all’altro. Un’API restituisce JSON e tu lo vuoi in un file di configurazione. Oppure una configurazione YAML va inviata a un programma che legge solo JSON. Questo convertitore fa entrambe le cose.

Come si usa

  1. Scegli la direzione con il pulsante Da JSON a YAML o Da YAML a JSON.
  2. Incolla i dati nel riquadro a sinistra, premi Apri file, oppure premi Esempio. Il risultato compare a destra mentre scrivi.
  3. Scegli un Rientro di 2 o 4 spazi. Nella direzione da YAML a JSON c’è anche l’opzione Minificato.
  4. Da JSON a YAML, attiva Ordina chiavi dalla A alla Z per mettere le chiavi in ordine alfabetico.
  5. Premi Copia, oppure Scarica per salvare un file .yaml o .json.

Quando cambi direzione, il risultato attuale passa nell’input, così puoi convertire avanti e indietro per verificare un’andata e ritorno.

Esempio da JSON a YAML

{"name":"web-app","version":3,"private":true,"ports":[80,443],"database":{"host":"localhost","password":null},"tags":["api","v2"]}

diventa:

name: web-app
version: 3
private: true
ports:
  - 80
  - 443
database:
  host: localhost
  password: null
tags:
  - api
  - v2

Virgolette sicure

Alcune stringhe sembrano di un altro tipo agli occhi di un parser YAML. Il convertitore le mette tra virgolette perché restino stringhe. Questo JSON:

{"zip":"02134","enabled":"yes","version":"1.10","note":"a: b","empty":""}

diventa:

zip: "02134"
enabled: "yes"
version: "1.10"
note: "a: b"
empty: ""

Senza virgolette, 02134 perderebbe lo zero iniziale, 1.10 diventerebbe il numero 1.1, e un vecchio parser YAML 1.1 (PyYAML e molti strumenti di CI seguono quelle regole) leggerebbe yes come true. Il convertitore segue le regole più rigide sulle virgolette, così il risultato viene letto allo stesso modo dai parser vecchi e nuovi. Le date come "2024-01-15" vanno tra virgolette per lo stesso motivo.

Esempio da YAML a JSON

# App settings
name: web-app
ports:
  - 80
  - 443
debug: false
retries: 3
owner: ~

diventa:

{
  "name": "web-app",
  "ports": [
    80,
    443
  ],
  "debug": false,
  "retries": 3,
  "owner": null
}

Il commento è sparito, perché il JSON non ha commenti, e ~ è l’abbreviazione YAML per null.

Le merge key vengono risolte. Questo file in stile Rails:

defaults: &defaults
  adapter: postgres
  host: localhost
development:
  <<: *defaults
  database: dev_db

produce:

{
  "defaults": {
    "adapter": "postgres",
    "host": "localhost"
  },
  "development": {
    "adapter": "postgres",
    "host": "localhost",
    "database": "dev_db"
  }
}

Due documenti separati da --- (per esempio kind: Service e kind: Deployment) diventano un unico array. Con l’opzione Minificato si legge [{"kind":"Service"},{"kind":"Deployment"}].

Come vengono letti i valori

Da YAML a JSON vengono usate le regole di YAML 1.2. Secondo queste regole yes, no e on sono semplici stringhe, solo true e false sono booleani, e le date restano stringhe. Questo input:

a: yes
b: no
c: on
d: true
e: 010
f: 0o10
g: 1e3
h: 2024-01-15

viene convertito (minificato) in:

{"a":"yes","b":"no","c":"on","d":true,"e":10,"f":8,"g":1000,"h":"2024-01-15"}

Nota che 010 viene letto come dieci, e 0o10 è la notazione ottale di otto.

Se un valore deve restare testo, mettilo tra virgolette nello YAML.

Consigli per un’andata e ritorno pulita

  • Convertire da JSON a YAML e ritorno dà gli stessi dati, ma non sempre lo stesso testo. L’ordine delle chiavi viene mantenuto, a meno che tu non attivi Ordina chiavi dalla A alla Z.
  • Commenti, ancore e tag personalizzati dello YAML non hanno un equivalente in JSON. Le ancore vengono espanse in copie complete dei dati.
  • I numeri interi molto grandi, come gli ID di 20 cifre, restano esatti da JSON a YAML dove il browser lo consente. Da YAML a JSON passano per i numeri di JavaScript, quindi salva gli ID lunghi come stringhe tra virgolette.
  • I tuoi file restano sul tuo dispositivo. Niente viene caricato.

Errori

Gli errori vengono segnalati con riga e colonna, e Mostra nell’input ti porta al punto giusto. Una virgola finale nel JSON dà Riga 3, colonna 1: La virgola prima di "}" non è ammessa. Nello YAML, una chiave ripetuta dà Map keys must be unique, e le tabulazioni usate per il rientro vengono rifiutate perché lo YAML ammette solo spazi.

Altri modi per convertire

yq. La versione in Go di yq converte dalla riga di comando: accetta JSON in ingresso perché il JSON è YAML valido, e può stampare l’uno o l’altro formato.

Python. Con il pacchetto PyYAML, yaml.safe_dump(json.load(f)) scrive YAML a partire da un file JSON. PyYAML segue YAML 1.1, quindi controlla stringhe come yes e no.

VS Code. Diverse estensioni aggiungono comandi per convertire una selezione tra JSON e YAML.

Strumenti correlati

Per riordinare un file YAML senza convertirlo, usa il formattatore YAML. Per controllare o formattare prima il JSON, usa il formattatore JSON. Per i dati di un foglio di calcolo, parti dal convertitore da CSV a JSON.

Convertitore da JSON a YAML: domande e risposte

Perché alcuni valori nello YAML sono tra virgolette?

Le stringhe che un parser YAML potrebbe leggere come qualcos'altro ricevono le virgolette. "02134" diventerebbe il numero 2134, e "yes" diventerebbe true nei parser più vecchi. Con le virgolette restano testo, così lo YAML significa esattamente quello che significava il JSON.

Che fine fanno i commenti quando converto da YAML a JSON?

Vengono eliminati, perché il JSON non ha commenti. Se riconverti, i commenti non tornano. Conserva il file YAML originale se i commenti ti servono.

Posso convertire un file con più documenti YAML?

Sì. I documenti separati da --- diventano un array JSON, con un elemento per documento, nello stesso ordine.

Ancore e merge key sono supportate?

Sì. Gli alias come *defaults vengono sostituiti dai dati a cui puntano, e le merge key scritte come <<: *defaults vengono unite alla mappatura, come si aspettano Docker Compose e Rails.

I miei dati vengono caricati?

No. Entrambe le direzioni funzionano nel tuo browser. Niente di ciò che incolli o apri viene inviato altrove.

Altri strumenti per codice e dati

Vedi tutti gli strumenti