alltools.one
Data
2025-06-21
7 min
alltools.one Team
JSONYAMLConversionConfigurationDevOps

Conversione da JSON a YAML: Una Guida Completa alla Migrazione

JSON e YAML rappresentano le stesse strutture dati con sintassi diverse. La conversione tra i due formati è semplice nella maggior parte dei casi, ma i casi limite riguardanti tipi, stringhe multilinea e commenti richiedono attenzione. Questa guida copre la mappatura completa tra i formati.

Mappatura della Sintassi

Oggetti / Mappings

JSON:

{
  "database": {
    "host": "localhost",
    "port": 5432,
    "name": "myapp"
  }
}

YAML:

database:
  host: localhost
  port: 5432
  name: myapp

Array / Sequenze

JSON:

{
  "servers": ["web1", "web2", "web3"]
}

YAML:

servers:
  - web1
  - web2
  - web3

Strutture Annidate

JSON:

{
  "services": [
    {
      "name": "api",
      "ports": [8080, 8443],
      "env": {"NODE_ENV": "production"}
    }
  ]
}

YAML:

services:
  - name: api
    ports:
      - 8080
      - 8443
    env:
      NODE_ENV: production

Converti istantaneamente con il nostro convertitore JSON to YAML.

Casi Limite da Tenere d'Occhio

1. Commenti

YAML supporta i commenti; JSON no. Quando converti YAML in JSON, tutti i commenti vengono persi:

# Questo commento andrà perso in JSON
database:
  host: localhost  # Anche questo

2. Stringhe Multilinea

YAML ha una potente sintassi multilinea che JSON non ha:

description: |
  Questa è una stringa
  multilinea che preserva
  le interruzioni di riga.

In JSON, questo diventa:

{
  "description": "Questa è una stringa\nmultilinea che preserva\nle interruzioni di riga.\n"
}

3. Ambiguità dei Tipi

YAML rileva automaticamente i tipi, il che può causare problemi:

version: 1.0    # Float, non stringa "1.0"
port: 080       # Ottale 64, non stringa "080"
country: NO     # Booleano false, non stringa "NO"

In JSON, i tipi sono espliciti:

{
  "version": "1.0",
  "port": "080",
  "country": "NO"
}

Quando converti JSON in YAML, aggiungi virgolette intorno ai valori che potrebbero essere interpretati erroneamente.

4. Valori Null

Entrambi supportano null, ma la sintassi è diversa:

value: null     # Esplicito
value: ~        # Abbreviazione YAML
value:          # Valore vuoto = null
{ "value": null }

5. Caratteri Speciali nelle Chiavi

Le chiavi JSON possono contenere qualsiasi carattere unicode. Le chiavi YAML con caratteri speciali necessitano di virgolette:

"content-type": "application/json"  # Il trattino richiede virgolette
simple_key: value                    # L'underscore va bene

Conversione da Riga di Comando

Usando yq (processore YAML)

# JSON to YAML
yq -P input.json > output.yaml

# YAML to JSON
yq -o=json input.yaml > output.json

Usando Python

# JSON to YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml

# YAML to JSON
python3 -c "import json, yaml, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json

Usando jq + yq insieme

# Elabora JSON, output come YAML
cat config.json | jq '.database' | yq -P

Quando Usare Ciascun Formato

CriterioJSONYAML
Modifica umanaPiù difficile (parentesi, virgole)Più facile (sintassi pulita)
Parsing automaticoPiù velocePiù lento
CommentiNon supportatiSupportati
Scambio datiStandard (API)Raro
ConfigurazioneAccettabilePreferito
RigiditàRigido (positivo)Flessibile (rischioso)

Usa JSON per: comunicazione API, archiviazione dati, configurazioni generate automaticamente, ambienti browser.

Usa YAML per: configurazioni modificate manualmente, Docker Compose, Kubernetes, pipeline CI/CD, Ansible.

Per un confronto più approfondito, consulta il nostro articolo YAML vs JSON.

FAQ

YAML è un superset di JSON?

Sì, dalla versione YAML 1.2 (2009), ogni documento JSON valido è anche YAML valido. Un parser YAML può analizzare JSON direttamente. Tuttavia, il contrario non è vero — le funzionalità YAML come commenti, ancore e stringhe multilinea non hanno equivalente in JSON.

Quale è più veloce da analizzare, JSON o YAML?

JSON è significativamente più veloce da analizzare in praticamente tutti i linguaggi. I parser JSON sono più semplici perché il formato ha meno sintassi da gestire. Per i file di configurazione caricati una volta all'avvio, la differenza è trascurabile. Per l'elaborazione dati ad alto throughput, JSON è la scelta chiara.

Risorse Correlate

Published on 2025-06-21
JSON to YAML Conversion: A Complete Migration Guide | alltools.one