Três formatos para os mesmos dados
JSON é o que as APIs enviam e o JavaScript lê. YAML é o que as pessoas escrevem à mão em arquivos de configuração do Docker Compose, Kubernetes, GitHub Actions ou Ansible. XML continua em toda parte: feeds, notas fiscais eletrônicas, arquivos do Office e web services mais antigos. Todos descrevem o mesmo tipo de dado: objetos, listas, texto, números e verdadeiro ou falso, então dá para converter um no outro.
Alguns detalhes não sobrevivem a toda conversão. Comentários em YAML e XML são descartados, porque o JSON não tem comentários. O XML não tem listas nem números próprios, então elementos repetidos viram arrays e números só são reconhecidos se você ativar essa opção. Cada direção abaixo explica o que acontece nesses casos.
Um parser YAML de verdade, sem atalhos
O YAML tem muitas regras que conversores simples erram: blocos de texto com | e >, texto com e sem aspas, âncoras (&nome) e aliases (*nome), merge keys (<<) e vários documentos num só arquivo, cada um começando com uma linha de três hífens. Esta ferramenta usa um parser YAML completo que segue a especificação YAML 1.2 e limita a expansão de aliases para que um arquivo malicioso não trave o seu navegador.