La conversione è senza perdite?
No, e nessuna conversione da YAML a JSON lo è. Commenti, anchor, merge key, tag e stile a blocco non hanno un equivalente JSON, quindi vengono risolti o eliminati. Qui la differenza è che ognuno di essi viene contato e localizzato invece di sparire in silenzio.
Il risultato torna a essere lo stesso file?
Il JSON sì: convertire JSON in YAML e di nuovo indietro ha prodotto un JSON identico byte per byte su tutti e tre i file reali che abbiamo provato, letterali numerici e ordine delle chiavi compresi. L'YAML no: i commenti spariscono, anchor e merge key vengono espansi e le virgolette cambiano. I valori sopravvivono al giro; il file come l'hai scritto no.
Perché il mio yes è diventato una stringa?
Perché questo strumento legge YAML 1.2, dove yes è testo. PyYAML, Ruby e yaml.v2 di Go leggono YAML 1.1, dove la stessa parola è true. Sono esattamente le righe che l'elenco delle differenze segnala, così le vedi qui invece che in un deploy rotto.
Arrotonda i miei numeri?
No. Il JSON viene scritto a partire dal tuo testo sorgente e non da un numero JavaScript, quindi 9007199254740993 e 1.10 vengono stampati esattamente come li hai digitati. Anche l'ordine delle chiavi sopravvive, comprese quelle che sembrano numeri come 10, 2 e 1, che un normale oggetto JavaScript riordinerebbe in silenzio in 1, 2, 10.
Apre i file CloudFormation o Ansible?
Li apre senza errori, !Ref e !GetAtt sono accettati e i loro valori conservati: ma il tag viene eliminato, quindi quello che ottieni sono dati, non un template che puoi distribuire.
Il mio file viene caricato?
No. La conversione avviene nella scheda del tuo browser. Qui conta più che nella maggior parte delle pagine: i manifest Kubernetes e i workflow CI contengono abitualmente hostname interni, indirizzi di registry, nomi di segreti e a volte i segreti stessi.