Italiano

Strumenti per sviluppatori · Convertitori di sintassi

Come funziona la conversione da JSON a YAML: virgolette, rientro e stile di flusso

· Come funziona

json yaml flusso di lavoro dello sviluppatore

Un oggetto JSON nidificato che si trasforma in una definizione di servizio YAML rientrata
Illustrazione vettoriale originale ToolAcre

Da JSON a YAML sembra una questione di eliminazione delle parentesi graffe, ma un convertitore prende decisioni reali su quali stringhe necessitano di virgolette e quando utilizzare lo stile a blocchi rispetto a quello a flusso. Questo post illustra tali decisioni.

Le parentesi graffe scompaiono, ma dove vanno le virgolette? — un payload JSON convertito in YAML e la combinazione di stringhe tra virgolette e semplici nel risultato

La rimozione di parentesi graffe e virgolette non trasforma un oggetto JSON in un file YAML affidabile. Il convertitore deve decidere come rappresentare una mappatura annidata, un array, una stringa e una nuova riga e se un valore che assomiglia a un numero o a un valore booleano rimane testo. Un tecnico DevOps che sposta una definizione di servizio API in Compose ha bisogno che tali decisioni siano prevedibili prima di copiare il risultato in una directory di distribuzione. La conversione modifica la sintassi, non la configurazione effettiva del servizio.

JSON è (quasi) già YAML — perché l'input è valido YAML 1.2 stile di flusso prima ancora che inizi la conversione

YAML 1.2 tratta la sintassi JSON come un sottoinsieme di stile di flusso consentito per dati ordinari a forma di JSON, il che spiega perché un oggetto JSON è già vicino a YAML. Ma una conversione utile in genere passa al rientro in stile blocco leggibile dall'uomo. L'input viene prima analizzato come JSON; i comandi shell arbitrari non vengono mai eseguiti. ToolAcre carica YAML attraverso uno schema limitato sul percorso inverso, rifiuta i tag non sicuri e limita l'espansione degli alias, quindi non è possibile utilizzare un convertitore per istanziare oggetti arbitrari da un tag !!js/function non attendibile.

Stile di blocco rispetto a stile di flusso: come un convertitore sceglie mappature e sequenze basate sul rientro rispetto a parentesi graffe e parentesi quadre e cosa significa la profondità del rientro

Lo stile di blocco utilizza coppie key/value rientrate e linee che iniziano con un trattino per gli elementi dell'array: una stringa immagine sotto services.web è rientrata sotto il web, mentre le porte diventano una sequenza. Lo stile di flusso mantiene parentesi graffe e parentesi quadre simili a JSON. ToolAcre utilizza il dump js-yaml con rientro a due spazi per impostazione predefinita, nessun riferimento e un'impostazione di larghezza di linea illimitata, anziché limitarsi a sostituire la punteggiatura con un'espressione regolare. La modifica della larghezza del rientro influisce sulla leggibilità, non sulle chiavi effettive o sull'ordine dell'array.

Quali stringhe devono rimanere tra virgolette: valori che altrimenti diventerebbero booleani, numeri, valori null o date e stringhe con due punti, hash o spazi iniziali

Alcune stringhe devono essere racchiuse tra virgolette per sopravvivere a un altro parser: "false" dovrebbe rimanere testo anziché booleano false, "2026-09-28" non dovrebbe diventare silenziosamente una data in un consumer YAML 1.1 e i due punti seguiti da uno spazio possono essere erroneamente interpretati come sintassi di mappatura. Il dumper di ToolAcre sceglie virgolette protettive, comprese le scelte di compatibilità per i lettori YAML meno recenti. Citare un normale riferimento a un'immagine con i due punti non è sempre necessario e rimuovere gratuitamente le virgolette presenti può interrompere un viaggio di andata e ritorno. Verifica i tipi e l'aspetto visivo.

Stringhe su più righe: come una nuova riga all'interno di una stringa JSON può diventare un blocco scalare letterale (|) o piegato (>)

Una stringa JSON contenente un vero e proprio ritorno a capo può essere resa come un blocco scalare YAML con |. La forma |- rimuove il ritorno a capo finale, mentre | lo preserva; > piegherebbe alcune interruzioni di riga in spazi. Questi indicatori descrivono i dati, non la formattazione. Il dumper di ToolAcre sceglie una rappresentazione in grado di rileggere la stringa originale anziché forzare sempre uno stile. Dopo la conversione, ispezionare attentamente il valore o il certificato di un ambiente multilinea: gli errori di rientro qui possono modificare ciò che riceve l'applicazione.

Esempio realizzato: conversione di una definizione di servizio: un oggetto nidificato JSON in YAML, con ogni decisione di citazione e stile annotata

Per un oggetto JSON concreto, utilizzare services.web con l'immagine "example/web:1", porte ["8080:80"] e chiavi di ambiente DEBUG="false", RELEASE="2026-09-28" e MESSAGE="riga uno\nriga due". ToolAcre genera l'immagine: example/web:1 e un elenco di porte; DEBUG diventa "false" tra virgolette, RELEASE "2026-09-28" tra virgolette e MESSAGE utilizza un blocco |- con due righe rientrate. Ogni scelta protegge i tipi originali. Eseguire il controllo di andata e ritorno del pannello prima di salvare come compose.yaml; il convertitore non è in grado di stabilire se l'immagine esiste o se il servizio verrà avviato.

Cosa non copre: aggiunta di commenti, ancoraggi o ordine di chiavi personalizzato, nessuno dei quali esiste nell'origine JSON da trasferire

JSON non ha commenti, ancore o alias da preservare: un convertitore non può recuperarli da input che non li hanno mai contenuti. Inoltre, non può dedurre la gestione dei segreti specifici di Compose, un ordine di chiavi personalizzato o la validità della versione API di Kubernetes. Due file YAML possono serializzare gli stessi dati ma utilizzare spazi bianchi e stili di virgolette diversi. Esamina il risultato nel programma di destinazione ed evita di incollare token API reali in servizi di conversione esterni.

Conclusione: la conversione è una riserializzazione con regole e in che modo il pannello dei convertitori di sintassi produce YAML nel tuo browser

La conversione viene analizzata e riserializzata in base a una serie di regole, non alla cancellazione della punteggiatura. I convertitori di sintassi eseguono tali operazioni nel tuo browser; ispezionare una configurazione sensibile localmente ed eseguire un viaggio di andata e ritorno su un piccolo oggetto di prova prima di applicare il metodo a un file più grande. Se un valore tra virgolette cambia tipo al ritorno, la formattazione non è meramente cosmetica e richiede un'analisi.